[英]Can't import module from bin directory of the same project
我正在构建一个库,该库将通过 pip 包含在其他项目中。
我有以下目录('venv' 是一个 virtualenv):
project
\- bin
\- run.py
\- myproj
\- __init__.py
\- logger.py
\- venv
我激活了 virtualenv。
在 bin/run.py 我有:
from myproj.logger import LOG
但我总是得到
ImportError: No module named myproj.logger
以下来自“项目”目录的作品:
python -c "from myproj.logger import LOG"
从“bin”目录调用时,它没有正确地将“project”目录添加到pythonpath。 如何从 bin 目录中的脚本中的“myproj”导入模块?
将myproject
安装到venv
virtualenv 中; 那么您将能够从任何脚本(包括bin/run.py
)导入myproject
,同时在没有sys.path
hacks 的情况下激活环境。
要安装,请为myproject
包创建project/setup.py
并在 virtualenv 处于活动状态时从project
目录运行:
$ pip install -e .
它将就地安装myproject
(无需重新安装myproject
立即看到myproject
模块中的更改)。
此处的解决方案是获取您拥有的 virtualenv,然后在开发人员模式下安装该软件包。
源 venv/bin/激活
点安装 -e 。
然后,您可以从run.py
导入myproject.logger
。
您还需要创建一个 setup.py 文件才能将包安装到您的环境中。 如果您还没有,可以在此处阅读官方文档。
只有当前工作目录位于 PYTHONPATH 中,用于解析依赖项。 因此,如果您在 bin 内并执行您的脚本,则项目不再在路径中。 您必须使用一种常用方法将项目添加到 PYTHONPATH,方法是附加到环境变量或通过以编程方式编辑 sys.path 列表,如另一个答案中所示。
在 PYTHONPATH 中添加项目路径
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.