在 ~/.bashrc 中使用 PYTHONPATH 导入 Python 模块不起作用
Posted
技术标签:
【中文标题】在 ~/.bashrc 中使用 PYTHONPATH 导入 Python 模块不起作用【英文标题】:importing Python module using PYTHONPATH in ~/.bashrc not working 【发布时间】:2016-09-12 23:15:35 【问题描述】:我一直在尝试对 Python 模块进行简单的导入,但在这个简单的操作中遇到了问题。
我的目录结构如下:
/home/username/Desktop/project
- src/
- src_a.py
- __init__.py
- bin/
- __init__.py
- app.py
我将/home/username/Desktop/project/src
添加到PYTHONPATH
,如下所示:
export PYTHONPATH="$PYTHONPATH:/home/username/Desktop/project/src"
在我的~/.bashrc
后面跟着$ source ~/.bashrc
。
我仍然无法在 app.py
或其他任何地方识别模块。我的编辑器似乎也无法识别(自动完成)该模块。我搜索了多个相关问题,它们指向相同的程序。我错过了什么吗?
【问题讨论】:
我建议删除bash
标记,除非您可以验证 bash 代码确实没有执行应有的操作。如果您运行env | grep PYTHONPATH
,是否会显示您期望的值?如果是,则不是 bash 问题。
env | grep PYTHONPATH
显示路径,继续删除bash
标签....谢谢:)
app.py 中的 import
行到底是什么不起作用?
from src import testfunction
from src
?那么你需要project
在你的PYTHONPATH 中,而不是project/src
,并且testfunction
需要在src/__init__.py
中定义。
【参考方案1】:
您已创建名为 src
和 bin
的包。如果要从包中导入某些内容,则需要将 PYTHONPATH
设置为包含包目录的目录,在这种情况下:
export PYTHONPATH=$PYTHONPATH:/home/username/Desktop/project
现在你应该可以像这样导入了:
from src import src_a
另外,由于bin
是同一目录中的一个包,您可以从中导入对象:
from bin import app
【讨论】:
你是对的......谢谢!该模块似乎确实被导入并且能够成功导入它们。但是,我的编辑器似乎仍然没有自动完成这些功能。我尝试了 2 个不同的(Atom 和 Spyder),但都失败了。 我终于让它与 Atom 一起工作了!还有一个额外的设置,我们可以在其中指定我们想要的特定包(/home/username/Desktop/project
)并且自动完成工作!不知道为什么它不会自动从PYTHONPATH
中提取它。再次感谢,这个答案解决了我的问题。 :)以上是关于在 ~/.bashrc 中使用 PYTHONPATH 导入 Python 模块不起作用的主要内容,如果未能解决你的问题,请参考以下文章
在 ~/.bashrc 中使用 PYTHONPATH 导入 Python 模块不起作用