问题标签 [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 投票
4 回答
1301 浏览

python - Python:确保 os.environ 和 sys.path 相等:web-requests、shell、cron、celery

我想确保我们启动 Python 解释器的所有方式都是相同的os.environsys.path

  • 通过 Django 和 Apache mod_wsgi 的 web 请求
  • 定时任务
  • 通过 ssh 进行交互式登录
  • 芹菜职位
  • 通过 systemd 启动的作业

有没有解决这个问题的通用方法?

如果是,那就太好了:它看起来怎么样?

如果不是,那么可悲:每个人都自己解决这个问题。...解决这个问题的好方法是什么?

操作系统:Linux(支持 systemd)

更新

更明确:

  1. 我想sys.path在 web 请求、cron 作业、从 shell 启动的 python 中保持相同...
  2. 我想os.environ在 web 请求、cron 作业、从 shell 启动的 python 中保持相同...

更新2

对于 systemd,我们使用EnvironmentFile

更新3

我们使用 virtualenv

0 投票
1 回答
93 浏览

python - Python 何时/如何使用 PYTHONPATH

我在理解 Python 如何使用PYTHONPATH环境变量时遇到了一些麻烦。根据文档,导入搜索路径 ( sys.path) 是“从环境变量初始化PYTHONPATH,加上依赖于安装的默认值”。

在 Windows 命令框中,我启动了 Python (v.2.7.6) 并打印了sys.path. 我得到了一个路径名列表,即“依赖于安装的默认值”。

然后我退出 Python,设置PYTHONPATH为,重新启动 Python,并按预期.;./lib;打印os.environ['PYTHONPATH'].了 I got 。.;./lib;然后我打印了sys.path. 我认为它应该是依赖于安装的默认值,并.;./lib;添加到开头或结尾。相反,它只是依赖于安装的默认值,好像PYTHONPATH是空的。我在这里想念什么?

0 投票
1 回答
62 浏览

python - 如何阻止 numpy_1.8 屏蔽 numpy_1.10?

我曾以为我使用的是最新版本的 numpy (1.10) 至少,当我运行时,pip list我看到numpy (1.10.4). 但是,当我进入 python 解释器并输入

我懂了

我希望在 1.10 版本之后的某个时间安装 1.8.2,因为我最近安装了一些新包,现在当我运行一些以前可以工作的代码时,我收到了这个错误:

OpenCV 2.4.8:针对 API 版本 9 编译的模块中,接受的答案提到 numpy 团队将版本 1.8 称为 numpy 版本 9。所以,我认为我最初使用的是 numpy_1.10,并以某种方式安装了 numpy_1.8。

我的第一个问题是这是如何发生的,我该如何防范?

我还想知道如何阻止 numpy_1.8 阻止 1.10。我最初的想法是使用 apt-get 删除 numpy_1.8,但这会删除许多其他依赖于 1.8 的软件包。

我很想只使用 rm 来摆脱 1.8 版本,但我担心那些其他软件包会受到影响。

我的第二个想法是更改 sys.path 以确保在 1.8 版本之前看到 1.10 版本。到目前为止,我没有使用 PYTHONPATH。有没有办法在不使用 PYTHONPATH 的情况下更改 sys.path?这是一个合理的方法吗?

0 投票
0 回答
141 浏览

python-2.7 - 从不同位置重新导入 Python 模块

我想从一个位置导入一个模块,将其卸载,然后从 python 中的另一个位置导入一个同名模块。就像是:

我尝试了以下方法,但没有运气:

不幸的是,在第二次输入之后,我看到模块仍然是从我添加到路径中的原始位置加载的。我试过:1

  • 在导入之间一起从 sys.path 中删除第一个位置

  • imp.reload(my_module)。

  • 附加和前置路径

谢谢!

0 投票
0 回答
136 浏览

python - 更改导入模块的python路径

我的电脑上有这些文件:

然后,我有:

和,

路径“my/path/defined/here/”在 config.py 中定义,但我想以某种方式将相同的路径添加到 file1.py,以便我可以在 file1.py 中导入 file2.py。我希望能够在 file1.py 中没有确切路径的情况下执行此操作,因为我将有多个 config.py py 文件。

0 投票
0 回答
837 浏览

python - 在虚拟环境中启动时,jupyter notebook 中的 sys.path 错误

我创建了一个sampleenv名为openfaceenv. 这是调用 jupyter notebook 时的sys.path输出sys.executable

(在 jupyter notebook 中sampleenv

['', '/Users/user/.virtualenvs/sampleenv/lib/python2.7/site-packages', '', '/Users/user/.virtualenvs/openfaceenv/lib/python2.7/site-packages/ dlib-18.18.99-py2.7-macosx-10.10-x86_64.egg', '/Users/user', '/Users/user/git-repos', '/Users/user/.virtualenvs/openfaceenv/lib/ python27.zip', '/Users/user/.virtualenvs/openfaceenv/lib/python2.7', '/Users/user/.virtualenvs/openfaceenv/lib/python2.7/plat-darwin', '/Users/user /.virtualenvs/openfaceenv/lib/python2.7/plat-mac', '/Users/user/.virtualenvs/openfaceenv/lib/python2.7/plat-mac/lib-scriptpackages', '/Users/user/. virtualenvs/openfaceenv/lib/python2.7/lib-tk','/Users/user/.virtualenvs/openfaceenv/lib/python2.7/lib-old','/Users/user/.virtualenvs/openfaceenv/lib/python2.7/lib-dynload', '/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7', '/usr/ local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin', '/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework /Versions/2.7/lib/python2.7/lib-tk', '/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac' , '/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages', '/Users/user/.virtualenvs/openfaceenv /lib/python2.7/site-packages', '/Users/user/.virtualenvs/openfaceenv/lib/python2.7/site-packages/IPython/extensions', '/Users/user/.ipython']/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7', '/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/版本/2.7/lib/python2.7/plat-darwin', '/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk', '/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac', '/usr/local/Cellar/python/2.7.9/Frameworks /Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages','/Users/user/.virtualenvs/openfaceenv/lib/python2.7/site-packages','/Users/ user/.virtualenvs/openfaceenv/lib/python2.7/site-packages/IPython/extensions', '/Users/user/.ipython']/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7', '/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/版本/2.7/lib/python2.7/plat-darwin', '/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk', '/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac', '/usr/local/Cellar/python/2.7.9/Frameworks /Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages','/Users/user/.virtualenvs/openfaceenv/lib/python2.7/site-packages','/Users/ user/.virtualenvs/openfaceenv/lib/python2.7/site-packages/IPython/extensions', '/Users/user/.ipython']/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin', '/usr/local/Cellar/python/2.7.9/Frameworks/ Python.framework/Versions/2.7/lib/python2.7/lib-tk', '/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat -mac', '/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages', '/Users/user/. virtualenvs/openfaceenv/lib/python2.7/site-packages','/Users/user/.virtualenvs/openfaceenv/lib/python2.7/site-packages/IPython/extensions','/Users/user/.ipython' ]/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin', '/usr/local/Cellar/python/2.7.9/Frameworks/ Python.framework/Versions/2.7/lib/python2.7/lib-tk', '/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat -mac', '/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages', '/Users/user/. virtualenvs/openfaceenv/lib/python2.7/site-packages','/Users/user/.virtualenvs/openfaceenv/lib/python2.7/site-packages/IPython/extensions','/Users/user/.ipython' ]7/lib-tk', '/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac', '/usr/local/Cellar/ python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages', '/Users/user/.virtualenvs/openfaceenv/lib/python2.7/site-包', '/Users/user/.virtualenvs/openfaceenv/lib/python2.7/site-packages/IPython/extensions', '/Users/user/.ipython']7/lib-tk', '/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac', '/usr/local/Cellar/ python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages', '/Users/user/.virtualenvs/openfaceenv/lib/python2.7/site-包', '/Users/user/.virtualenvs/openfaceenv/lib/python2.7/site-packages/IPython/extensions', '/Users/user/.ipython']7/site-packages/IPython/extensions','/Users/user/.ipython']7/site-packages/IPython/extensions','/Users/user/.ipython']

/Users/user/.virtualenvs/openfaceenv/bin/python2.7

但是,当我在 sampleenv 的命令行中运行 ipython 或 python shell 并获取 sys.path 和 sys.executable 时,它​​们都正确地定位了正确的路径,也就是说,

(在 python shell 或 ipython shell 中sampleenv

['', '/Users/user', '/Users/user/git-repos', '/Users/user/.virtualenvs/sampleenv/lib/python27.zip', '/Users/user/.virtualenvs/sampleenv /lib/python2.7','/Users/user/.virtualenvs/sampleenv/lib/python2.7/plat-darwin','/Users/user/.virtualenvs/sampleenv/lib/python2.7/plat-mac ', '/Users/user/.virtualenvs/sampleenv/lib/python2.7/plat-mac/lib-scriptpackages', '/Users/user/.virtualenvs/sampleenv/lib/python2.7/lib-tk', '/Users/user/.virtualenvs/sampleenv/lib/python2.7/lib-old', '/Users/user/.virtualenvs/sampleenv/lib/python2.7/lib-dynload', '/usr/local/ Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7', '/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib /python2.7/plat-darwin', '/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk', '/usr/local/Cellar/python/2.7.9/Frameworks/ Python.framework/Versions/2.7/lib/python2.7/plat-mac', '/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat -mac/lib-scriptpackages', '/Users/user/.virtualenvs/sampleenv/lib/python2.7/site-packages']

'/Users/user/.virtualenvs/sampleenv/bin/python'

为什么会这样?我怎样才能解决这个问题?另外,当我尝试切换到其他虚拟环境时,同样的问题,它指向openfaceenv站点包的路径。我已经查看了相关问题,但他们的解决方案并没有真正解决问题,我没有不想使用sys.path.append(),我也尝试过运行hash -r,但结果相同。

0 投票
3 回答
5654 浏览

python - 如何撤消 sys.path.append(pathToModule)

我一直在尝试修复我的 cpu 上的 python 路径,我最初只是想改变我的.bash_profile,但这不起作用,所以我使用了

现在当我运行我的脚本时,我收到了这个错误信息

如何解决此问题或撤消sys.path.append(path/To/Module)?

另外,是否可以在 python 路径中导出多个目录,如果可以,我该怎么做?

0 投票
3 回答
9120 浏览

python - 为 Notebook 设置默认的 sys.path

我的所有 .py 文件都在一个文件夹脚本中,我所有的 IPython 笔记本都在一个名为 Notebook 的文件夹下。

每个笔记本文件对脚本上的一个或多个文件有多个交叉依赖项。

sys.path.append每个笔记本上放置似乎很麻烦,我希望有一种方法可以添加默认查找路径,就像我们添加PYTHONPATH.bash_profile.

现在我执行以下操作:

我希望有一个可以执行以下操作的设置:

0 投票
1 回答
1180 浏览

python - Jupyter笔记本路径错误

我需要从我正在构建的代码中测试一些功能,这些代码我导入到 jupyter 笔记本中。

问题是,simTools_path在功能和 jupyter notebook 上是不同的。此外,当我从我的主要 python 脚本中调用这些函数时,它工作正常。

MWE

simTools_path/objects/classes.py

jupyter笔记本

结果:

笔记:

1)我在不同模块内的不同函数中使用此路径变量来加载相对于simTools_path路径的文件数据。

2)我的jupyter笔记本位于/home/jhumberto/WORK/Projects/code/simulations_2016-07-14/simTools/jupyterNotebooks

有任何想法吗?

0 投票
1 回答
1574 浏览

python - (子)模块中的 Python 脚本可以从其目录层次结构中的上游导入吗?

我意识到在 SO 上有大量与 Python 和导入相关的帖子,但似乎有相当多的帖子在询问与创建实际 Python 包有关的导入规则/程序(而只是一个具有多个目录和python 文件)。我对 Python 很陌生,只需要对在项目目录中的多个 py 文件的上下文中访问/导入什么是可能的和不可能的做一些基本的说明。

假设您有以下项目目录(要清楚,这不是 sys.path 上某处的包,而是说,在您的桌面上):

我是否正确理解,如果我在运行时通过和从目录中直接运行,则scriptC.py可以在其中导入和使用方法或类的唯一方法是scriptB.py如果我在运行时将父目录和路径添加到 Python 路径?scriptC.py$ python scriptC.pysubsubfolderscriptB.pysys.path

但是,有可能scriptC.py导入foo.pyscriptB.py导入scriptC.pyfoo.py不处理sys.path,对吗?仅通过使用相对导入路径就可以访问子目录中的相邻 py 文件和 py 文件,您只是无法导入位于父目录或同级目录中的 python 脚本(不使用 sys.path)?