python - 如何让 Python 在不手动修改 sys.path 的情况下选择正确的模块?

标签 python import path module

我在已 checkout 的存储库副本中对 python 模块进行了一些更改,需要对其进行测试。但是,当我尝试运行使用该模块的脚本时,它一直从存储库的主干中导入模块,这对我没有用。

我尝试设置 PYTHONPATH,但它什么也没做。经过一番搜索后,我发现 site-packages 目录下的 .pth 文件中的任何内容甚至会放在 PYTHONPATH 之前(对我来说这违背了拥有它的目的)。我相信这是我的模块未被选中的原因。

我说的对吗?如果是这样,覆盖它的方法是什么(不修改脚本以具有 sys.path.insert(0,path) )?

编辑:回复 NicDumz - 原始存储库在 /projects/spam 下. python 模块是 /projects/spam/sources/python/a/b/ 中的一部分。 .然而,这些都是每晚使用自制的 make 变体“构建”的,然后将它们放入 /projects/spam/build/lib/python/a/b/ 中。 .该脚本仅使用最后一个路径下的模块。
我已将整个存储库 checkout 到 /home/sundar/spam 下, 并在 /home/sundar/spam/sources/python/a/b/mymodule.py 中进行了更改.我已将 PYTHONPATH 设置为 /home/sundar/spam/sources/python并试图import a.b.mymodule没有成功。

最佳答案

听起来您需要安装 virtualenv并使用它为不同的目的设置不同的环境。在一个环境中,您将从存储库的主干导入模块,但在另一个环境中,您将混合使用主干模块和测试模块。

通过像这样将所有内容分开,您可以更轻松地回滚更改(只需删除整个虚拟环境文件夹),并且可以大大降低您的测试装备最终提交到存储库的风险。

关于python - 如何让 Python 在不手动修改 sys.path 的情况下选择正确的模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1679673/

相关文章:

Python交互式shell : how do I know what method gets used when I simply type the name of an object?

python - 如何在 PyCrypto AES CTR 模式下设置 block 大小

oracle - 导入 oracle 转储时出错

c - 在C中,我如何获取符号链接(symbolic link)的路径(我的意思是符号链接(symbolic link)的路径而不是目标的路径)?

linux - 在本地安装 zlib

Javascript:通过将路径作为字符串传递给对象来从对象中获取深层值(value)

python - 当编辑完成时,PyQt 中的 QComboBox 是否有信号?

python - 捕获没有转义序列的字符串

mysql - 如何提高 mysql LOAD XML LOCAL INFILE 表导入的性能?

mysql - 相同的 MySQL 数据库导入显示不同数量的记录