繁体   English   中英

无法从同一个项目的bin目录导入模块

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM