问题标签 [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.

0 投票
2 回答
539 浏览

python - sys.path 中的第一个条目是否应该代表当前工作目录?

我一直认为sys.path默认情况下的第一个条目是当前工作目录。但事实证明,在我的系统上,第一个条目是脚本所在的路径。因此,如果我正在执行/usr/binfrom/some/directory中的脚本,则中的第一个条目sys.path/usr/bin. 我的系统上是否配置错误,或者这是预期的行为?

0 投票
3 回答
2776 浏览

python - 如何升级 Apache 使用的 Python 版本?

在 Red hat box 上,我将 Python 从 2.3 升级到 2.6.4,并将符号链接更改为pythonso,当我输入python2.6.4 时,解释器就会出现。

但是,我的 .py 文件可以从命令行运行,但不能在浏览器中运行。这似乎是一个sys.path问题,所以我在浏览器中打开文件并打印出来sys.path

令人惊讶的是,从浏览器调用的 mysys.path与从命令行调用的不同。因为路径都指的是 2.3,所以我相信 Apache 正在选择 Python 2.3,而不是我安装的新 2.6.4 版本。

如何让 Apache 使用 Python 2.6.4?

0 投票
6 回答
116197 浏览

python - PYTHONPATH 与 sys.path

另一位开发人员和我不同意是否PYTHONPATHsys.path应该使用 Python 在用户(例如,开发)目录中查找 Python 包。

我们有一个具有典型目录结构的 Python 项目:

在 script.py 中,我们需要做import package.lib. 当软件包安装在 site-packages 中时,script.py 可以找到package.lib.

但是,当从用户目录工作时,需要做其他事情。我的解决方案是将 my 设置PYTHONPATH为包含"~/Project". 另一个开发者想把这行代码放在 script.py 的开头:

这样 Python 就可以找到package.lib.

我认为这是一个坏主意,因为这条线仅对开发人员或从本地副本运行的人有用,但我无法给出一个坏主意的充分理由。

我们应该使用PYTOHNPATH,sys.path还是可以?

0 投票
2 回答
4498 浏览

python - 如何在 Google App Engine (Python) 中修改 sys.path?

我尝试将以下行添加到我的处理程序脚本(main.py)中,但它似乎不起作用:

sys.path.append('subdir')

subdir位于我的根目录中(即包含 的目录app.yaml)。

这似乎不起作用,因为当我尝试导入存在于 中的模块时subdir,我的应用程序会爆炸。

0 投票
1 回答
1190 浏览

python - 如何将脚本的父目录作为模块加载,而不将该目录的父目录的所有同级添加到我的 sys.path?

我希望这个问题有一个简单的答案,而我只是忽略了。

这是设置:

run.py 的内容:

运行脚本:

我能想出解决这个问题的唯一方法是:

run.py 的内容:

这样就可以了,但是问题(如果我没记错的话)是这会将 foo/ 的父目录添加到sys.path并因此搜索 foo/ 的所有同级文件夹以查找 Python 模块。

我有一个案例,我真的,真的不想那样做。我只想将单个目录作为模块添加到我的路径中,但我无法弄清楚如何在添加该目录的父目录以及该父目录下的所有其他目录的情况下添加该模块。

我在这里忽略了什么吗?有没有一种简单的方法可以将脚本的父文件夹添加为模块?

0 投票
4 回答
4698 浏览

python - 无论如何我可以在 python 中从在线 SVN 访问文件吗?

我制作了一个 python 模块文件并上传到 SVN Repo(比如 string_utl.py ,它执行字符串相关操作)。无论如何,我可以访问 SVN 的文件 Direclty。虽然我从 SVN 本地签出文件到我的计算机并从那里访问它。但这不是重点。我正在考虑一个本地存储库,我的所有同事都可以访问和修改代码。我虽然在 sys.path 列表中添加了 Lsvn 位置,但它没有用。

我这样做了 sys.path.append ("http://lsvn/svn/lsvn/QRM_Helper/Helpful_Script/");

但没有奏效。

我尝试了另一种方式,例如 urllib.urlopen(some_url),因为我使用的是 Python 3,它说要使用 urllib2.urlopen() 但在我的情况下它也没有工作。它给出了该模块不存在的以下错误。

0 投票
3 回答
844 浏览

python - python中的新sys.path

我无法从未存储在 sys.path 中的目录导入脚本。我在名为“Development”的目录中有一个保存为 test.py 的脚本,并且正在尝试将开发目录添加到 sys.path,以便我可以从当前名为 index.py 的脚本中导入一个函数。

这是我的 index.py 代码:

printline() 在 test.py 中定义为:

这是我收到的错误:

关于如何让它发挥作用的任何想法?

谢谢。

0 投票
2 回答
2884 浏览

python - 搜索路径是否比 sys.path 中的多?

我认为 sys.path 是 Python 模块的所有搜索路径的完整列表。

但是,在我的 Ubuntu 机器上,“/usr/local/lib/python2.6/dist-packages/”几乎是我所有模块所在的位置,并且该路径不在 sys.path 中。而且我仍然可以在该路径上导入任何模块。

编辑,不正确:即使我将 sys.path 设置为空列表,我仍然可以从该路径导入。

dist-packages 路径的隐含知识从何而来?在这个隐含的搜索路径组中是否还有其他路径,或者它是什么?

编辑:我的帖子的第二部分似乎不是真的。事实上,“sys.path = []”意味着我不能导入任何东西,甚至不能从我当前的工作目录中导入。我很抱歉。

0 投票
2 回答
1397 浏览

python - 特定于应用程序的 PYTHONPATH

我有一个包含一系列包的应用程序。有相当多的模块引用了包层次结构中更高的其他模块。如下例所示,我可以使用相对导入来解决这个问题。但是,直接运行模块进行测试会失败并出现Attempted relative import in non-package异常。

有没有更好的方法来组织我的应用程序或导入语句,以便模块可以单独执行以进行测试并从其他模块导入?

例子

基础.py

孩子.py

用户.py

现有解决方案

我发现我可以将以下标头添加到需要引用层次结构中更高模块的模块顶部:

缺点是我需要到处添加这段代码,而且它不是恒定的:'..'相对路径会根据层次结构中包的深度而变化。

其他可能的解决方案...

  1. 我可以使用我的应用程序根目录创建一个 .pth 文件。不幸的是,这必须添加到我的 Python 安装的 site-packages 文件夹中,因此它不是特定于应用程序的。
  2. 我可以暂时将我的应用程序根目录添加到 PYTHONPATH,并使我的所有模块都从根目录引用包。但是,这消除了通过简单地调用来运行脚本的简单性python.exe whatever.py
  3. 我可以编写某种模块,当导入时,它会在我的应用程序的根文件夹中查找标记文件。然后可以将这个通用模块安装到我的本地 Python 安装中,并由我的应用程序中的每个模块导入,从而保证根在 PYTHONPATH 中,无论我正在执行哪个模块。
0 投票
2 回答
3439 浏览

python - Django 部署:ImportError:无法导入设置“settings.py”(是否在 sys.path 上?):没有名为 settings.py 的模块

大家好,感谢您花时间看我的问题。

我是 Python 的新手,以为我有 php/mysql 的经验。

我刚刚收到了一个 django 站点的代码存储库,并被要求在服务器上启动并运行它。我已经能够运行 syncdb 并进行迁移。现在我试图在浏览器中导航到我的网站,这是我得到的错误:

我的 apach2.conf python 配置如下所示:

settings.py 文件位于目录 /home/ubuntu/venvs/live/myproject 中。

有人可以在这里帮助我吗?

谢谢!