(在对我进行重复问题投票之前,请注意,我在这个问题上所能找到的一切都与virtualenv有关,而不是venv)
系统:
背景 (做作的例子,可能会有一两处错别字,但想法是最重要的部分)
我有一个项目的形式是:
Project/
├── __init__.py
└── project
├── packageA
│ ├── fileA.py
│ └── __init__.py
└── packageB
├── fileB.py
└── __init__.py
在文件b.py,我有一个导入语句,例如
^{pr2}$我创造了一个静脉
cd /path/to/Project; python3.6 -m venv .venv; source .venv/bin/activate
然后我就跑
source project/packageB/fileB.py
这会给我一个错误:
ModuleNotFoundError: no module named 'project'
试图解决:
问题:必须可以使用venv进行模块导入,否则它的值将为零——那么我在设置中基本上缺少了什么?(对于viritualenv,我只使用了'add2virtualenv')
[编辑-显示更多详细信息]
# Changes to .venv/bin/activate
PYTHONPATH="/home/steve/Temp/Project:/home/steve/Temp/Project/project:$PYTHONPATH"
export PYTHONPATH
python -c "import os; print(os.sys.path)"
['', '/home/steve/Temp/Project', '/home/steve/Temp/Project/project', .....
[Edit2-将packageA添加到PYTHONPATH Works]
如果我在PYTHONPATH中添加'path/to/packageA',导入就可以了。为了使用这个,我必须将每个子包添加到我的项目中——这对于大型项目来说不太理想。在
这条线
失败的原因
import
路径弄乱了,它包括project
文件夹,但不应该包含project
可能是不在您的PYTHONPATH
去修理它
步骤1)修复
^{pr2}$fileB.py
中的import
语句,将import
替换为步骤2)通过检查您的
bash
环境,亲自确认您是否将project
添加到PYTHONPATH
中如果不是临时修理的话
(注意,
$PATH
的更改与Python package/module
搜索无关,因此这是一次浪费的尝试)。在然后,当您运行脚本时,它不会失败:
顺便说一句,最好使用
python
调用python脚本:最后,通过编辑虚拟环境的
activate
目录中的activate
脚本来永久更新虚拟环境。在上面靠近顶部的地方添加PYTHONPATH
导出。在这是一个有点模糊的情况。我的解决方案是:创建一个设置.py对于您的项目(无论如何都是有益的),并且使用activated venv做一个“python”设置.py发展”。在
这会将您的项目添加到PTH文件中,因此您可以导入。在
例如设置.py,摘自互联网:
相关问题 更多 >
编程相关推荐