【问题标题】:$PYTHONPATH not working on OSX$PYTHONPATH 在 OSX 上不起作用
【发布时间】:2016-03-02 21:47:07
【问题描述】:

我已经在这个问题上待了一天,但没有找到解决方案。我的 python 项目非常深入,一些模块必须独立运行(没有 -m 标志,没有相对导入)。出于这个原因,我们决定将根文件夹添加到 PYTHONPATH。我正在运行 OSX 10.11.3。直到昨天,一切都进行得很顺利。我可以从终端运行独立模块,在 Python 2.7 和 3.5 中都没有问题。昨天,在不修改我的 PYTHONPATH 或任何其他环境设置的情况下,从终端运行这些独立模块中的任何一个现在都会在 Python 2 和 3 中出现导入错误。

这是我的工作树:

/Users/sintrafico/Documents/code/central_maestra
- reports_server.py
- api_server.py
- sintrafico
    - sql
        - SQLConnection
    - api
        - incident
            - csv (not package)
                - independent_module
            - tests

我昨天运行测试时覆盖率没有问题,但现在不行了。

Python 2 python csv/independent_module.py 给出错误:

Traceback (most recent call last):
  File "csv/independent_module.py", line 13, in <module>
    from sintrafico.sql import SQLConnection
ImportError: No module named sintrafico.sql

Python 3 python3 csv/independent_module.py 给出错误:

Traceback (most recent call last):
  File "csv/create_bemobile_csv.py", line 13, in <module>
    from sintrafico.sql import SQLConnection
ImportError: No module named 'sintrafico'

昨天在事件文件夹中,这个命令运行良好:coverage run -m unittest discover。现在所有测试都失败了,因为ImportError: No module named 'reports_server'

自从昨天开始发生这种情况以来,我一直在搞乱我的 PYTHONPATH。我将其留空,但它不起作用(如预期的那样),我现在已经通过多种方式添加了路径:

  • export PYTHONPATH=“${PYTHONPATH}:/Users/sintrafico/Documents/code/central_maestra"
  • export PYTHONPATH=“/Users/sintrafico/Documents/code/central_maestra:${PYTHONPATH}"
  • export PYTHONPATH=“${PYTHONPATH}:/Users/sintrafico/Documents/code/central_maestra/"
  • export PYTHONPATH=“/Users/sintrafico/Documents/code/central_maestra:${PYTHONPATH}"

并且在不附加 PYTHONPATH 的情况下设置它,因为它一开始是空的。我重新启动了我的电脑几次都没有成功。另请注意,我有一个 .bash_profile 和 .bashrc 包含以下内容:

# Setting PATH for Python 3.5
# The orginal version is saved in .bash_profile.pysave
PATH="/Library/Frameworks/Python.framework/Versions/3.5/bin:${PATH}"
export PATH
PYTHONPATH=“/Users/sintrafico/Documents/code/central_maestra:${PYTHONPATH}“
export PYTHONPATH

最后,最让我烦恼的是,如果我在 PyCharm 中运行测试,它们都运行并通过,我根本不会收到任何导入错误。

【问题讨论】:

  • 您是否尝试过设置不带引号和大括号的路径?可能是您将 python 路径设置为路径的字符串表示形式。
  • 我没有,我马上试试。谢谢
  • @JaseRieger 非常感谢!就是这样。 Coverage 和 Python 可以从终端再次运行测试,我可以运行独立的模块。我不知道为什么会这样,因为我大约一周没有修改 .bash 文件,所以我认为这不是问题。
  • 我会回答的

标签: python pythonpath


【解决方案1】:

您是否尝试过设置不带引号和大括号的路径?您将 python 路径设置为路径的字符串表示形式,而不是路径列表

【讨论】:

    猜你喜欢
    • 2011-10-28
    • 2016-08-06
    • 1970-01-01
    • 2016-06-09
    • 2017-02-19
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多