问题标签 [pythonpath]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
7123 浏览

python - Mac OSX 上的 Pythonpath

我通读了Add to python path mac os x,我认为这样做是个好主意,但是 IDLE 仍然给我一个简单调用的语法错误open(filename, mode),所以我看了一点,发现我能够做到如http://developer.apple.com/library/mac/#qa/qa1067/_index.html中所述,并在 .MacOSX 文件夹中设置了 environment.plist ,所以我在我的主目录中这样做了,但仍然没有任何变化...我现在迷路了:-)

这就是我在 .bash_profile 中作为 python-path 添加的内容,在 environment.plist 中添加了相同的路径(没有 :$PYTHONPATH):

编辑:这就是我得到语法错误的地方......在解释器中工作正常

错误:

0 投票
2 回答
3182 浏览

python - 导入与系统模块同名的模块

我的情况与this question中的情况相似......不同之处在于,

在我们的 python/django 项目中,我们有一个名为utils的目录,它保存了基本功能......

有时,我们需要通过从控制台运行 thm 来测试一些模块,例如

一切都很好,直到 python 尝试从我们的utils 目录中导入一些东西......

我检查了我的python路径,我们的项目在列表中,项目文件下的每个文件夹都有__init__.py文件,当我在项目目录中运行ipython时......一切正常,否则,python从它自己的utils目录中导入......

我的同事使用 sama 方法没有任何问题,但它会引发ImportError我的环境......我们所有人都缺少的问题可能是什么?

更新:我的项目目录和每个子目录都有__init__.py文件,我可以毫无问题地从我的项目中导入其他模块...当我在与我的 procekt 不同的文件夹中并且我运行 ipython 时,这样的导入没有问题...

但是,当涉及到导入实用程序时,它失败了......

UPATE 2:导致问题的原因是django文件夹下的utils目录,它也在python路径中......

0 投票
2 回答
879 浏览

python - 可以在我的 PYTHONPATH 中多次提及具有通用包层次结构的模块吗?

我有两个共享包名称的单独项目。只要它们不在 PYTHONPATH 上,它们就可以运行,但是一旦它们都出现,它们中的一个就无法在自己的项目中找到导入。

例如,两个这样的项目:

项目一:

test.py 包含以下行:

项目二:

如果我跑

没有错误。但如果我跑

我得到错误:

有没有办法让具有公共包的不同 Python 项目共享 PYTHONPATH?还是 Python 总是只使用找到包的第一个路径?

注意:我知道如果您将 import from x.foo 修改为 import foo 那么它将起作用。但我想知道是否可以在不修改任何一个包的情况下做到这一点。

0 投票
3 回答
4045 浏览

python - 自动调用常用初始化代码,无需创建 __init__.py 文件

我的项目中有两个目录:

“src” 包含我完善的代码,“scripts” 包含一次性 Python 脚本。

我希望所有脚本都将“../src”添加到它们的 sys.path 中,以便它们可以访问“src”树下的模块。一种方法是编写一个 scripts/__init__.py 文件,其内容为:

这可行,但有将我的所有脚本放在一个名为“脚本”的包中的不良副作用。还有其他方法可以让我的所有脚本自动调用上述初始化代码吗?

我可以在我的 .bashrc 中编辑 PYTHONPATH 环境变量,但我希望我的脚本可以开箱即用,而不需要用户摆弄 PYTHONPATH。此外,我不喜欢仅仅为了适应这个项目而对整个帐户进行更改。

0 投票
7 回答
53235 浏览

python - 在 Python 中将配置文件放在哪里?

在开发模式下,我有以下目录树:

我使用ConfigParser来解析myproject.conf文件。

在我的代码中,很容易加载具有良好路径的文件:my_project/conf/myproject.conf

问题是:当我使用 setup.py 安装我的项目时,配置文件位于(感谢 setup.py)中,/etc/my_project/myproject.conf而我的应用程序位于/usr/lib/python<version>/site-packages/my_project/.

如何my_project/conf/myproject.conf在“生产”模式下在我的项目中引用我的文件,并在“开发”模式下引用本地文件(my_project/conf/myproject.conf)。

此外,如果可能的话,我希望是便携的(例如在 Windows 上工作)。

这样做的好习惯是什么?

0 投票
1 回答
1699 浏览

python - 让 setuptools/easy_install 与 PYTHONPATH 配合得很好

为什么 setuptools/easy_install .pth 文件不能很好地与 PYTHONPATH 一起放置,我如何让它们很好地发挥作用,并在 sys.path 中的那些 .pth 推动之前将目录保留在我的 PYTHONPATH 中?

我目前的问题是我已经为我们的项目创建了一个包,其中 PyYAML 和 PyCrypto 作为要求。

正如我们一直在开发的那样,我们已经使用 pip 在标准目录(/usr/lib64/python2.6/site-packages)中安装了 PyYaml。我们在那里安装了旧版本的 PyCrypto,然后发现我们需要更新的版本,我们安装在 /opt/devtools/lib64/python2.6/site-packages 下。在 /usr/lib64 之前,我们已经将 PYTHONPATH 设置为首先从 /opt 读取。这一切都在开发中运行良好。运行时,我们从 /opt 获得 PyCrypto 2.3,从 /usr/lib64/... 获得 PyYaml

但是现在,当我尝试在 virtualenv 中安装时,当我运行时python setup.py develop,setuptools/distribute 最终将 /usr/lib64/python2.6/site-packages 添加到 easy-install.pth,而不是 /opt/devtools /lib64/python2.6/site-packages。它正在寻找正确的版本,如输出所示:

但不要将 /opt/... 添加到 easy-install.pth。(只有 /usr/lib64... 和我运行 setup.py 的目录被添加到路径中。)

最终结果是,虽然我 setuptools 认为它​​成功了,但当我运行我的代码时,easy-install.pth 决定它比我更清楚我想要什么,将自己插入到我的 PYTHONPATH 之前,我最终导入了错误的版本PyCrypto。

两个问题:

  1. 为什么 setuptools 与它添加到 .pth 文件的目录不一致?我希望两个目录或两个目录都不会安装。

  2. 有没有办法让 setuptools 不尝试覆盖我的 PYTHONPATH?为什么这甚至被认为是一个好主意?

0 投票
2 回答
920 浏览

python - PYTHONPATH - 不同python安装的动态?

在我的 CentOS5 服务器上,我有 Python2.4 和 2.6(yum 需要 2.4 才能工作)。我不确定发生了什么,但是每次我尝试运行一个模块被加载到 2.4 site-packages 目录中的文件时,系统突然变得非常混乱。我检查了 PYTHONPATH/sys.path ,看起来一切都被 2.6 环境数据覆盖了。

它以前不这样做。我只是在脚本开头的 shebang 语句中声明了 /usr/bin/python 或 /usr/bin/python26 ,它总能找到正确的模块。

有没有办法让 PYTHONPATH 变量动态并根据正在运行的 python 解释器加载不同的路径?

否则,我将不得不手动编辑每个应用程序中的路径,这似乎有点矫枉过正。

它是在安装 web.py 之后开始的(顺便说一句,我喜欢它)。

回溯:正如下面有人评论的那样,我将此程序的 shebang 更改为 #!/usr/bin/env python:

另一个例子,尝试使用 yum:

我注意到一些程序没有被 b"" 语法混淆,它们都是使用 2.4 的程序,出于某种原因使用 2.6。如果我尝试让程序使用 2.6 解释器,它能够理解该语法,但是找不到任何其他模块(位于 2.4 站点包目录中)。

我不知道那个语法是什么,因为它们被写入了我从 sourceforge 获得的模块中,但是它们上周正在工作。我不确定发生了什么变化。

谢谢,汤姆

0 投票
6 回答
23451 浏览

python - PYTHONPATH 不适用于 GNU/Linux 上的 sudo(适用于 root)

编辑:适用于 root,sudo 是问题所在。参见下文。

我有一个包含我自己的库的目录,例如我的 Python 库位于/home/name/lib/py.
通过将以下行添加到以下行,我已将此目录添加到所有用户(包括 root)的Python PATH/etc/bash.bashrc中:

它适用于所有用户(包括 root)。但它不适用于 sudo。有什么方法可以让我使用 sudo/etc/bash.bashrc吗?

编辑:更多信息:

我已经PYTHONPATH像这样添加到 sudoers 文件中Defaults env_keep += "HOME PYTHONPATH":它不起作用。

0 投票
2 回答
72 浏览

python - 导入模块时遇到问题

os.chdir()用来更改我的 Recommendations.py 文件所在的当前目录。然后我输入Import recommendations,我得到错误:

可能是什么问题呢?

0 投票
4 回答
3024 浏览

python - 如何在bash中添加到开始的Python路径

这是我的.bash_profile

然后我打开python但是我添加的目录.bash_profile不是第一个:

我怎样才能添加到 python 路径中,.bash_profile所以它会在一开始。这是用于共享主机。我需要能够导入我的 django 安装而不是使用系统默认值。

谢谢