标签: pythonpath

在命令行上提供临时 PYTHONPATH?

我在想像

python3 my_script.py --pythonpath /path/to/some/necessary/modules

有这样的吗?我知道(我认为)PycharmPYTHONPATH在您使用它执行脚本时会临时修改;Pycharm 是如何做到的?

我想这样做的原因(你真的不需要阅读以下内容)

我想这样做的原因是我有一些代码通常需要在我自己的机器上运行(这很好,因为我使用 Pycharm 来运行它)但有时需要在远程服务器上运行(在命令行上),并且它不起作用,因为远程服务器没有PYTHONPATHPycharm 临时自动添加的s。我不想这样做,export PYTHONPATH=[...]因为经常更改它很麻烦(并且假设它确实需要经常更改)。

python pythonpath pycharm

7
推荐指数
1
解决办法
2874
查看次数

Python .pth文件无效

我的.pth配置文件中列出的目录未出现在sys.path中.

配置文件的内容,命名为some_code_dirs.pth:

/home/project
Run Code Online (Sandbox Code Playgroud)

文件路径:

/usr/lib/python2.6/site-packages/some_code_dirs.pth
/usr/lib/python2.6/some_code_dirs.pth
Run Code Online (Sandbox Code Playgroud)

检查python解释器中的sys变量:

>>> print sys.prefix 
'/usr'
>>> print sys.exec_prefix
'/usr'
Run Code Online (Sandbox Code Playgroud)

所有这些似乎都是Python 文档中的要求,但sys.path不包含/ home/project目录.

请注意,解释器在以下情况后添加目录:

>>> site.addsitedir('/usr/lib/python2.6/site-packages') 
Run Code Online (Sandbox Code Playgroud)

我在这里错过了什么?

python pythonpath

6
推荐指数
1
解决办法
4036
查看次数

将Python源代码拆分到单独的目录中?

以下是我的公司“foo.com”使用的一些各种 Python 包:

com.foo.bar.web
com.foo.bar.lib
com.foo.zig.web
com.foo.zig.lib
com.foo.zig.lib.lib1
com.foo.zig.lib.lib2
Run Code Online (Sandbox Code Playgroud)

这是将源存储在磁盘上的传统方法:

pysrc/
  com/
    foo/
      bar/
        web/
        lib/
      zig/
        web/
        lib/
          lib1/
          lib2/

PYTHONPATH=pysrc
Run Code Online (Sandbox Code Playgroud)

但出于组织目的(不同的团队、不同的版本控制等),我们希望将它们存储如下:

bar/
  pysrc/
    com/
      foo/
        bar/
          web/
          lib/
zig/
  pysrc/
    com/
      foo/
        zig/
          web/
          lib/
            lib1/
            lib2/

PYTHONPATH=bar/pysrc:zig/pysrc
Run Code Online (Sandbox Code Playgroud)

问题是:

第二种组织方法有什么问题吗?

例如,如果我们import com.foo,Python 会在哪里寻找__init__.py

符号链接这些目录有意义吗?例如:

pysrc/
  com/
    foo/
      bar/ -> symlink to /bar/pysrc/com/foo/
      zig/ -> symlink to /zig/pysrc/com/foo/
Run Code Online (Sandbox Code Playgroud)

欢迎任何一般代码组织建议。

python import project-organization pythonpath

6
推荐指数
1
解决办法
2994
查看次数

如何以编程方式将多个路径附加到PYTHONPATH

我有4个目录:

/home/user/test1
/home/user/test2
/home/user/test3
/home/user/test4
Run Code Online (Sandbox Code Playgroud)

我有另一个测试目录

/home/user/testing
Run Code Online (Sandbox Code Playgroud)

有文件testall.py

我怎么能将PATT附加到test,test1到test4到PYTHONPATH,以便我可以访问test1到4下的文件.

顺便说一句,test1到4有python文件所在的多个目录.

我试过了:

import sys
import os
PROJECT_ROOT = os.path.dirname(__file__)
sys.path.insert(0,os.path.join(PROJECT_ROOT,"test1"))
sys.path.insert(1,os.path.join(PROJECT_ROOT,"test2"))
sys.path.insert(2,os.path.join(PROJECT_ROOT,"test3"))
sys.path.insert(3,os.path.join(PROJECT_ROOT,"test4"))
Run Code Online (Sandbox Code Playgroud)

似乎没有用

也:

import sys
sys.path.append('/home/user/test1','/home/user/test2','/home/user/test3','/home/kahmed/test4')
from test1.common.api import GenericAPI
Run Code Online (Sandbox Code Playgroud)

不工作.

基本上:从test1.common.api导入GenericAPI应该工作

python path pythonpath

6
推荐指数
2
解决办法
1万
查看次数

为什么virtualenv从我的shell继承$ PYTHONPATH?

所以我在Ubuntu 14.04机器上将我的所有工具从python2迁移到python3.4.到目前为止,我已经完成了以下工作:

  1. 在我的zshrc中为我的用户使用python到python3
  2. 在系统本身上安装了pip3(但我只是将virtualenvs用于所有内容,所以我不会真正使用它)
  3. 改变了我的virtualenvwrapper"make"别名mkvirtualenv --python=/usr/bin/python3('workon'在下面被调用为'v')

现在好奇,你可以清楚地看到它,从virtualenv激活的环境运行python3仍然继承我的$ PYTHONPATH,它仍然为我所有的python2路径设置.这在我的virtualenv中安装/运行程序时会造成严重破坏,因为python3路径显示在旧的python2路径之后,因此python2模块首先在我的程序中导入.在启动virtualenv之前将我的$ PYTHONPATH取消为''修复此问题并且我的程序按预期启动.但我的问题是:

  1. 在virtualenvs中这个$ PYTHONPATH的继承是正常的吗?这不是打败了整个目的吗?
  2. 当python已经在内部处理它自己的路径时,为什么将$ PYTHONPATH设置为shell中的env-var?
  3. 我正确使用$ PYTHONPATH吗?我应该只在我的'zshrc'中设置它以仅列出我的个人添加物($ HOME/dev)而不是冗余的'/ usr/local/lib /'位置?
  4. 在调用它们之前,我可以非常轻松地导出备用python3路径以供我的virtualenvs使用,并在完成后重置它们,但这是解决此问题的最佳方法吗?
    ? echo $PYTHONPATH
    /usr/local/lib/python2.7/site-packages:/usr/local/lib/python2.7/dist-packages:/usr/lib/python2.7/dist-packages:/home/brian/dev

    brian@zeus:~/.virtualenvs
    ? python2
    Python 2.7.6 (default, Mar 22 2014, 22:59:56)
    [GCC 4.8.2] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import sys, pprint
    >>> pprint.pprint(sys.path)
    ['',
     '/usr/local/lib/python2.7/dist-packages/pudb-2013.3.4-py2.7.egg',
     '/usr/local/lib/python2.7/dist-packages/Pygments-1.6-py2.7.egg',
     '/usr/local/lib/python2.7/dist-packages/urwid-1.1.1-py2.7-linux-x86_64.egg',
     '/usr/local/lib/python2.7/dist-packages/pythoscope-0.4.3-py2.7.egg',
     '/usr/local/lib/python2.7/site-packages',
     '/usr/local/lib/python2.7/dist-packages',
     '/usr/lib/python2.7/dist-packages',
     '/home/brian/dev',
     '/usr/lib/python2.7',
     '/usr/lib/python2.7/plat-x86_64-linux-gnu',
     '/usr/lib/python2.7/lib-tk',
     '/usr/lib/python2.7/lib-old',
     '/usr/lib/python2.7/lib-dynload',
     '/usr/lib/python2.7/dist-packages/PILcompat',
     '/usr/lib/python2.7/dist-packages/gst-0.10',
     '/usr/lib/python2.7/dist-packages/gtk-2.0',
     '/usr/lib/pymodules/python2.7',
     '/usr/lib/python2.7/dist-packages/ubuntu-sso-client',
     '/usr/lib/python2.7/dist-packages/ubuntuone-client',
     '/usr/lib/python2.7/dist-packages/ubuntuone-storage-protocol',
     '/usr/lib/python2.7/dist-packages/wx-2.8-gtk2-unicode']
    >>>

    brian@zeus:~/.virtualenvs
    ? v py3venv
    (py3venv)
    brian@zeus:~/.virtualenvs …

python virtualenv zshrc pythonpath virtualenvwrapper

6
推荐指数
1
解决办法
5745
查看次数

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

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

import sys
sys.pat.append(path/To/Module)
Run Code Online (Sandbox Code Playgroud)

现在当我运行我的脚本时,我收到此错误消息

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

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

python import pythonpath sys.path python-2.7

6
推荐指数
1
解决办法
9236
查看次数

在 VS Code 中添加到 PYTHONPATH

我正在尝试将 src 文件夹添加到我的PYTHONPATHiE 中,做与Mark directory as sources root在 PyCharm 中相同的事情。

我查看了Visual Studio Code的解决方案- 如何向 python 路径添加多个路径?但是那里显示的解决方案对我不起作用。

我已经设置了我的最小示例,如下面的屏幕截图所示:

在此处输入图片说明

我的理解是拥有一个 .env 文件PYTHONPATH="./src;${PYTHONPATH}"会将 src 文件添加到路径中。

然而,当运行代码运行器或运行python change_pyhton_path.pysrc 不是 PYTHONPATH 的一部分并且从 src 直接导入失败时。

我确实有设置"python.envFile": "${workspaceFolder}/.env"

另一方面,在 pyCharm 中,点击Mark directory as sourcesrc后一切正常。 在此处输入图片说明

感谢您的帮助!

python pythonpath visual-studio-code

6
推荐指数
1
解决办法
1054
查看次数

Macbook M1 上的 VS Code 上的 python.pythonPath 提示“未知配置设置”

我刚刚开始接触编程,需要一些帮助。当我在 Mac 上打开 VScode 并且我的 python 解释器版本不会显示在状态栏中时,我的问题就开始了。我问过类似的问题: Python Interpreter Version not shown in status bar of VS code on Mac

我更深入地研究了它(https://www.youtube.com/watch?v=veJvQ88ULOM&t=193s),发现我可能需要给它一个路径,所以我正在寻找如何通过转到 code/preference/ 来设置它settings/ 然后单击打开设置 JSON(右上角图标)以将 python.pythonPath: "/opt/homebrew/opt/python@3.9/bin/python3.9" 放入大括号中以使其工作,但我的 VS 代码获胜甚至不认识 python.pythonPath。

任何帮助深表感谢!

macos pythonpath visual-studio-code pythoninterpreter

6
推荐指数
1
解决办法
1744
查看次数

Mingw64安装添加了Pyhton版本!如何删除 mingw64 Python 并保留我的?

我安装了Python 3.8.10 64位(win10)。我将它与 VSC 一起使用。另外对于 c/c++ 我已经安装了 mingw64。Mingw64 安装了一个 python 版本,不知道为什么和为什么,但它已经出现了问题。因为 mingw64 安装是系统范围的安装,并且 Path 是系统变量,所以每次我尝试从控制台运行某些内容时,都会使用 mingw64 python 安装。所以我的 python 安装是本地的、用户范围的安装。因此,每次都会首选系统范围安装,除非我每次都指定路径。

最烦人的问题是

PS C:\src\python-ivi-master> python .\setup.py install
Traceback (most recent call last):
  File "C:\src\python-ivi-master\setup.py", line 11, in <module>
    from setuptools.command.test import test as TestCommand
ModuleNotFoundError: No module named 'setuptools'
Run Code Online (Sandbox Code Playgroud)

它找不到模块,例如 setuptools。如果我列出已安装的软件包,则该模块就在那里。

Package           Version
----------------- -------
easy-scpi         0.1.2
modbus            3.2
numpy             1.22.3
pandas            1.4.1
pip               22.0.4
pymodbus          2.5.3
pyserial          3.5
python-dateutil   2.8.2
python-ivi        0.14.9
pytz              2021.3
PyVISA            1.11.3
scpi              2.4.0
setuptools        60.10.0 …
Run Code Online (Sandbox Code Playgroud)

python setuptools pythonpath ming windows-10

6
推荐指数
1
解决办法
841
查看次数

VS Code 在工作区中找不到自己的 python 模块

我正在使用 VS Code 开发一个 python 包,其在 VS Code 中打开的工作区文件夹的布局如下

workspace
| + tests
| | - test1.py
| | + other_tests
| | | - test2.py 
| + mymodule
| | ...
Run Code Online (Sandbox Code Playgroud)

我想要的是打电话进来test1.py并带test2.py包裹mymodule

import mymodule
Run Code Online (Sandbox Code Playgroud)

当我这样做时,我总是收到错误no module named 'mymodule'。我知道我可以通过将以下内容插入到所有测试文件来加载路径:

import sys
sys.path.append('<path_to>/workspace/')
Run Code Online (Sandbox Code Playgroud)

然后mymodule就可以正确加载了。(我知道我可以使用pathlib.Path(__file__).parent[n]一些n来获得<path_to>.

但如果你在不同的文件夹中有很多测试文件,这个过程真的很麻烦......而且它很丑陋。

有什么方法可以告诉 VS Code 始终将 包含workspace在路径中吗?

我尝试了一个.env文件

PYTHONPATH=<path_to>/workspace/
Run Code Online (Sandbox Code Playgroud)

我还尝试将以下内容添加到launch.json

"env": { "PYTHONPATH": "${workspaceFolder}" }
Run Code Online (Sandbox Code Playgroud)

两者都没有达到目的。(我也不确定这是否PYTHONPATH …

python pythonpath visual-studio-code

6
推荐指数
1
解决办法
7931
查看次数