在 ~/.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】:

您已创建名为 srcbin 的包。如果要从包中导入某些内容,则需要将 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 模块不起作用

/etc/bashrc和/etc/profile

如何在ubuntu中的bashrc文件中添加新行?

个人目录下权限以及环境设置(.bashrc)

/etc/bashrc和/etc/profile傻傻分不清楚?

/etc/bashrc和/etc/profile傻傻分不清楚?