python-3.x - python virtualenv导入失败
问题描述
我的源代码树如下。我正在使用python3.7
:
proj/
src/
__init__.py
module1.py
module2.py
venv
__main__.py
__main__.py
进口module1
,哪个进口module2
。我在虚拟环境中运行它。见下文:
在__main__.py
:
import src.module1
...
在module1.py
:
import module2
...
请注意,我确实__init__.py
在目录中有该文件src
。
当我运行时__main__.py
,我最终得到一个导入错误:
ModuleNotFoundError: No module named 'module2'
我发现如果我在虚拟环境之外运行程序,module1
可以导入module2
,但是在 中venv
,我遇到了这个错误。我对如何正确完成这项工作感到困惑,因为我相信我在这里已经正确地完成了所有工作,使用绝对导入和__init__.py
.
解决方案
Python 导入非常敏感!前几天我破坏了我的整个项目......
第一的:
export PYTHONPATH=/path/to/proj/
第二:
import src.module2
第三:在 main.py 中,如果您正在调用单个函数或变量,请执行
from src.module2 import x,y
这样做而不是... import *
推荐阅读
- android - 在使用 CacheDataSource 的 Android 上使用 Exoplayer 进行部分缓存不起作用
- ios - 将枚举与 BehaviorRelay 一起使用会在下游带来不同类型的值,并且无法处理
- python - Flask + Apache Spark 在 Kubernetes 上部署
- google-sheets - 读取电子表格时出错 (Google Data Studio)
- java - 使用新的 Square 对象初始化游戏板上的每个位置(正方形 2D 数组)
- python - 跨列范围使用 np.where
- css - 为什么 react-select 的焦点总是移动到第一个元素?
- angular - 我想以角度随机更改 div 位置
- flutter - 如何在 Flutter 中向 SelectableText 添加“溢出”?
- powerbi - Power BI 应用导航:sharepoint.com 拒绝连接