问题标签 [sys.path]
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.
python - 向 Python sys.path 添加一个目录,以便在我每次使用 Python 时都包含它
目前,当尝试引用一些库代码时,我在 python 文件的顶部执行此操作:
然后,my-library
只要会话处于活动状态,它就会成为 sys.path 的一部分。如果我开始一个新文件,我必须记住sys.path.append
再次包含。
我觉得必须有更好的方法来做到这一点。如何让my-library
我的 Windows 机器上的每个 python 脚本都可用,而不必sys.path.append
每次都使用?
python - web.py 不导入 MySQLdb
我正在使用 web.py,由于某种原因,我收到以下错误:
这是我的 sys.path,万一那是罪魁祸首?不过,我看到了.egg,所以我不知道。想法?
以下是 2.6 site-packages 目录的内容:
如果我打开 python(2.4 或 2.6),我可以import MySQLdb
毫无问题。
谢谢,汤姆
python - 导入 Python [Whoosh python -- 不理解导入错误]
我对很多事情都很陌生。
我尝试安装 Whoosh 以查看源代码并使用它。
我将路径添加到 sys.path 中包含 setup.py 和 README.txt 的文件夹,然后
并显示错误:
在 setup.py 文件中到达这一行时:
虽然 sys.path 需要文件夹的路径
它来自哪里,如何解决?
也许我只能在 sys.path 的最后一个位置打开路径中的文件?
谢谢并恭祝安康。
python - dist-packages 和 sys.path
我在 myapplication 中有一些代码可以在 myapplications 的目录中查找一些文件。我正在使用 AptanaStudio,我看到我的代码运行正常,但是当我创建 debian 包并将其安装在另一台计算机上时,搜索不成功,因为 sys.path 看起来像一个不同的列表。
从 Aptana 执行sys.path包括可执行目录 (/mysvncopy/myapplication) 的路径,我相信我的代码会以这种方式找到文件。
应用程序的安装将这些文件保留在/usr/share/pyshared/myapplication中,我认为这个目录对于sys.path中的/usr/local/lib/python2.6/dist-packages是可以自动访问的,但是出了点问题,/ usr/local/lib/python2.6/dist-packages当然在sys.path中,但是应用程序在/usr/share/pyshared/myapplication中找不到任何东西。
我如何确保应用程序知道在/usr/share/pyshared/myapplication中查找以及在 windows 和 mac 中的等价物?
如果我在我的代码中包含:
搜索成功,但此代码非常依赖。
如有必要,我可以粘贴 setup.py。
谢谢
python - Mac OS X 上的 python 模块搜索路径是如何确定的?
导入非内置模块时,解释器在sys.path
. sys.path
从这些位置初始化(http://docs.python.org/library/sys.html#sys.path):
- 包含输入脚本的目录(或当前目录)
- 蟒蛇路径
- 依赖于安装的默认值
虽然前两个来源是直截了当的,但任何人都可以解释第三个是如何工作的,以及影响它的可能性是什么?
尽管我对通用解决方案感兴趣,但我的具体问题是:
- 我已经安装了Enthought 发行版 7.2 32-bit,然后是 Scipy-Superpack。现在,enthought python 尝试从 numpy 导入
/Library/Python/2.7/
,这是 superpack 安装它们的地方,而不是从 enthought 站点包中导入。 wxPython
使用创建的应用程序py2app
-A
与sys.path
使用 启动应用程序时不同python start_app.py
。
java - Java 与 Jython,优雅的解决路径问题的方法?
我有一段 Java 代码,使用 Jython 调用一些 Python 库,这个库依赖于外部 Jython 经典库,如re
正则表达式等,所以我有这种代码:
顺便说一句,我不喜欢我需要更改和硬编码路径(path1)
和(path2)
您是否看到避免这种情况并添加一些“whereami”自动检测路径功能(至少对于(path2)
)的优雅方法?
看起来我需要 (path1) 和 (path2) => 以便 (A) 工作!
我还可以将我的问题重新表述为没有任何ImportError: No module named myModule或如何避免硬编码之类的优雅方式:
此致
python - 在 Python 中将文件路径永久添加到 sys.path
我有一个名为 的文件example_file.py
,我想从其他各种文件中使用它,所以我决定在另一个文件中添加example_file.py
并sys.path
导入该文件以使用该文件。为此,我在 IPython 中运行了以下命令。
我可以看到我刚刚添加的路径,当我尝试从另一个目录路径导入此文件时,如下所示:
它工作得很好,但是一旦我从 IPython 出来,再次输入它并检查sys.path
,我发现我添加的路径不存在,那么如何在 Python 中永久添加 sys.path 的路径?
python - py2app -- 导入外部模块
是否可以py2app
设置为将用户的典型内容sys.path
(运行 python 时,而不是 py2app .app)附加到 py2app 设置的路径的末尾?
我正在捆绑一个带有交互式 python 提示的应用程序——我希望其他用户能够使用他们构建的模块,但主 .app 中没有提供这些模块。如果他们尝试导入与 捆绑在一起的东西,我py2app
希望使用该py2app
版本。
--use-pythonpath
和--site-packages
选项py2app
似乎没有添加常规 python 所做的所有目录。
python - 限制导入到特定路径,不限制导入模块的路径
是否可以从特定目录导入模块,而不影响导入模块的导入路径?
如果我要临时替换sys.path
为所需的目录,则导入的模块将无法导入该目录之外的任何内容。
我不想只sys.path
添加目录,因为我不想导入回退到另一个来源。
python - 如果它们具有相同的名称,为什么 python 会找到模块而不是包?
这是我的目录结构:
文件内容: root/tests/_ init _.py
根/测试/test_1.py
root/_ init _.py - 空的
root/classes.py
根/extra.py
根/根.py
我得到以下输出:
原来问题是python解释器用来搜索包或模块的顺序:
根据 python 文档http://docs.python.org/2/tutorial/modules.html#the-module-search-path:“当一个名为 spam 的模块被导入时,解释器首先搜索一个内置模块那个名字。如果没有找到,它会在变量 sys.path 给出的目录列表中搜索名为 spam.py 的文件。”</p>
这意味着 python 应该查看 sys.path 索引 0 条目,获取路径 '/home/dmugtasimov/tmp/name-res' 并找到名为 root 的包,然后在此包中搜索名为 extra 的模块。但它会在 /home/dmugtasimov/tmp/name-res/root/ 目录中搜索模块根目录,然后尝试在其中找到名为 extra 的内容。它会发生什么?它不与官方文件相矛盾吗?还是搜索包的规则与搜索模块的规则不同?如果是这样,这些规则是否包含在文档中的某个地方?
更新
我把它放在这里是为了更好的格式。
为了进一步调查,请执行以下操作:
- 删除 root.pyc
- 将 root.py 重命名为 root2.py
- 运行 python -vv -m unittest tests.test_1
似乎 python 仅在最初的 4 次尝试中忽略 sys.path。
更新 2
简化版:
文件init .py、b.py 和 xyz.py 为空
文件 a.py:
文件 t.py:
跑:
输出:
跑:
输出:
跑:
输出:
跑:
输出:
如您所见,两种情况下 sys.path 是相同的:
但行为不同。对于 a.py,python 首先搜索包 xyz,然后搜索其中的模块 b:
换句话说:
- 在目录 sys.path[0] -> FOUND 中搜索 PACKAGE xyz
- 在 PACKAGE xyz -> FOUND 中搜索模块 b
- 继续执行
对于 t.py,它在与 a.py 本身相同的目录中搜索模块 xyz,然后在模块 xyz 中找不到模块 b:
换句话说:
- 在与 a.py(或 sys.path[1] ?)相同的目录中搜索 MODULE xyz -> FOUND
- 在 MODULE xyz 中搜索 MODULE b -> 未找到
- 导入错误
因此,看起来“import xyz.b”是否会有所不同,具体取决于 a.py 最初是如何作为脚本加载或从另一个模块导入的。
更新 3
我提交了文档修复提案:http: //bugs.python.org/issue16891
更新 4
UPDATE 2 中描述的行为原因现在对我来说完全清楚了。
http://docs.python.org/2/tutorial/modules.html#intra-package-references
6.4.2. 包内引用
子模块通常需要相互引用。例如,环绕模块可能使用回声模块。事实上,这种引用非常普遍,以至于 import 语句首先在包含包中查找,然后再查找标准模块搜索路径。因此,环绕模块可以简单地使用 import echo 或 from echo import echofilter。如果在当前包(当前模块是其子模块的包)中找不到导入的模块,则导入语句会查找具有给定名称的顶级模块。
对于“python a.py”,“a”不被视为包中的模块,但对于“python t.py”,“a”被视为包“xyz”中的模块。因此,在第一种情况下,它根据 sys.path 搜索,但在第二种情况下,它在同一个包(即“xyz”)中搜索名为“xyz”的模块(换句话说,“xyz.xyz”)
您可以轻松查看是否像这样更改 a.py:
文件 a.py:
我的输出是:
感谢@JF Sebastian 指出正确的文档位置。
更新 5
似乎还有另一个问题。如果有兴趣,请在此处关注评论:http: //bugs.python.org/issue16891