标签: pythonpath

庞大且广泛的 PYTHONPATH 是否会影响性能?

假设您有一个项目,该项目在不同的地方都有多个级别的文件夹,为了使导入调用更清晰,人们修改了整个项目的 PYTHONPATH。

这意味着而不是说:

from folder1.folder2.folder3 import foo
Run Code Online (Sandbox Code Playgroud)

他们现在可以说

from folder3 import foo
Run Code Online (Sandbox Code Playgroud)

并将folder1/folder2 添加到PYTHONPATH。这里的问题是,如果继续这样做,并向 PYTHONPATH 添加大量路径,这是否会对性能产生明显或显着的影响?

为了在性能方面增加一些规模感,我要求至少以毫秒为单位(即:100 毫秒?500 毫秒?)

python pythonpath python-2.7

5
推荐指数
1
解决办法
495
查看次数

Azure DevOps Pipelines - Python - ModuleNotFoundError,尽管 sys.path.append() 或设置 PYTHONPATH

我正在尝试为我的 python 应用程序运行一些测试,但我无法正确设置路径以便我test.py可以找到它。

我的应用程序的结构如下:

repo/src/main/python/main_module
repo/tests/test.py
Run Code Online (Sandbox Code Playgroud)

我的test.py看起来像这样:

import sys

sys.path.append(os.path.normpath('C:/repo/src/main/python'))
import main_module
Run Code Online (Sandbox Code Playgroud)

现在我想在 Azure Pipelines 中测试代码,因此首先我将存储库复制到位:

- powershell: |
    cd C:/
    mkdir repo
    cp -r -v $(src.repo)/* C:/repo/
  condition: eq( variables['Agent.OS'], 'Windows_NT' )
Run Code Online (Sandbox Code Playgroud)

之后我用来tree测试所有内容是否都被正确复制。

然后我只需调用以下命令来运行测试脚本:

python C:/repo/tests/test.py
Run Code Online (Sandbox Code Playgroud)

但这给了我一个ModuleNotFoundError.

我也尝试过通过 PYTHONPATH 设置路径main_module,但这也不起作用。

这是我错过的东西还是 Azure Pipelines 中的错误?

python pythonpath azure-devops

5
推荐指数
1
解决办法
2315
查看次数

在Windows中如何设置Python2的sys.path?

Python文档说,sys.path就是"从环境变量初始化PYTHONPATH,再加上安装相关的默认."

但究竟适用于Windows的"依赖于安装的默认值"是什么?

(我知道这可能取决于如何编译python,但如果我只有二进制文件,有没有办法弄清楚默认sys.path是如何构造的?)

澄清:我不是在问"我的是什么sys.path?".我想知道"Python如何构建sys.path?" 文档说,它sys.pathsys.path[0]作为脚本的当前目录构建的,加上Python在PYTHONPATH环境变量中找到的内容,以及一些依赖于安装的voodoo.那神秘的伏都教部分是什么?

python windows path pythonpath

4
推荐指数
1
解决办法
1992
查看次数

使用Python IDLE时如何从备用位置导入模块?

我一直试图解决这个问题超过2天,筛选互联网和教程,但我还没有解决我的问题.我是一个真正的新手,还不知道我在做什么..

我使用的软件:Mac OS X 10.6 Python v3.2.2交互式解释器(IDLE)

问题:IDLE的默认目录是/ Users/ME/Documents /.具有扩展名.py的文件只能在此目录中打开.但是,我创建了一个文件夹,我想保存所有与此软件有关的.py文件等.目前,IDLE无法从我选择的目录中加载.py文件.

我首先做的是我添加到IDLE:import sys.sys.path.append('Users/Mydir /')sys.path

但是,在2010年的现有线程中,我读取sys.path仅用于解释器,如果我要更改它,我需要修改PYTHONPATH环境变量:

PYTHONPATH ="/ Me/Documents/mydir:$ PYTHONPATH"导出PYTHONPATH

但是,我很困惑如何使用它并且无法找到以下问题的答案:1)安装程序时,我的计算机上已经存在PYTHONPATH(.py?)?如果是,那它在哪里?我找不到任何地方.如果不是,我需要创建一个.但是内容应该在哪里以及应该是什么,以便IDLE可以从非默认目录加载文件?它应该只包含粗体字吗?

我希望我能清楚地解决问题.

干杯

python macos pythonpath python-idle

4
推荐指数
1
解决办法
9487
查看次数

Django管理命令ImportError

导入模块到我的qsl/management/commands/<customcommand>.py文件有问题.事实上,我的app结构是:

qsl/management/commands/ : dir for my management commands
qsl/management/jobs/ : dir for my mangement jobs
Run Code Online (Sandbox Code Playgroud)

jobs是python类,包含我想在coresponding命令中完成的工作

例如:

news command in qsl/management/commands/ imports news job in qsl/management/jobs/
Run Code Online (Sandbox Code Playgroud)

我想要执行时的错误python manage.py newsimporterror : no module named management.jobs.news

python django importerror pythonpath

4
推荐指数
1
解决办法
2130
查看次数

Pythonpath对我不起作用

所以我一直在努力学习"学习Python的艰难之路"的最后一个练习,它指出在我运行程序之前,你必须设置Pythonpath环境变量,如下所示:

export PYTHONPATH=$PYTHONPATH:.
Run Code Online (Sandbox Code Playgroud)

我已经完成了这个,并且在它没有工作之后(我假设这就是为什么当我尝试运行我的程序时,我得到一个ImportError),我做了一些关于pythonpath的研究.它基本上说Pythonpath是要找到要导入的模块的位置.所以我将Pythonpath设置为我试图导入的模块的实际位置,但仍无济于事.

这是我的目录:

  • User/myname/python_stuff/projects/GothonWeb
    • 斌/
      • init.py(当然是双下划线.)
      • app.py
    • gothonweb /
      • init.py(当然是双下划线.)
      • maps.py
    • 模板(web.py)
      • game.html
      • 的index.html
      • 的layout.html
    • 等等等等.

我试图运行app.py,尝试导入main.py模块:

from gothonweb import maps
Run Code Online (Sandbox Code Playgroud)

但我仍然得到这个错误:

Traceback (most recent call last):
File "python_stuff/projects/GothonWeb/bin/app.py", line 2, in <module>
from gothonweb import maps
ImportError: No module named gothonweb
Run Code Online (Sandbox Code Playgroud)

有谁知道什么?哦,其他一些细节.在Mac Os X Lion上运行Python 2.7,如果有帮助的话.

python pythonpath

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

在emacs中设置适当版本的Python和PYTHONPATH变量

我正在尝试学习用于Python的Emacs开发,并且我发现我的一些项目由于模块导入问题而无法工作,即SciPy或NumPy未导入.我已经尝试过针对这里提出的相关问题提出的解决方案,比如更改PYTHONPATH环境变量,但没有一个是好的.在使用IDLE和终端的普通解释器时比较了sys.path我已经找到了不同的版本:IDLE中的Python-2.7.3

Python 2.7.3 (default, Aug  1 2012, 05:14:39) 
[GCC 4.6.3] on linux2
Type "copyright", "credits" or "license()" for more information.
==== No Subprocess ====
>>> from pprint import pprint as pp
>>> import sys
>>> pp(sys.path)
['/home/mench',
'/usr/bin',
'/usr/lib/python2.7',
'/usr/lib/python2.7/plat-linux2',
'/usr/lib/python2.7/lib-tk',
'/usr/lib/python2.7/lib-old',
'/usr/lib/python2.7/lib-dynload',
'/usr/local/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages/PIL',
'/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-control-panel',
'/usr/lib/python2.7/dist-packages/ubuntuone-couch',
'/usr/lib/python2.7/dist-packages/ubuntuone-storage-protocol']
Run Code Online (Sandbox Code Playgroud)

和Python-2.7.2作为默认系统解释器

Python 2.7.2 (default, Mar  1 2012, 22:28:45) 
[GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from pprint …
Run Code Online (Sandbox Code Playgroud)

python emacs pythonpath

4
推荐指数
1
解决办法
3530
查看次数

使用Path上的模块运行py.test的模块导入错误

我无法以我想要的方式导入我的模块进行测试.我在2.7.2的virtualenv中运行所有这些

我有一个类似的目录结构

/api
    /api
        __init__.py
        my_module.py
    /tests
        my_module_test.py
Run Code Online (Sandbox Code Playgroud)

我将PYTHONPATH设置为/ Path/api /.我将CD转入/ Path/api并运行以下命令

 py.test tests/my_module_test.py   
Run Code Online (Sandbox Code Playgroud)

它在以下情况下不起作用:

  1. 当我在my_module_test.py的顶部有以下内容时 from api.my_module import my_function

它在以下情况下有效:

  1. 当我在my_module_test.py的顶部有以下内容时 from my_module import my_function

为什么我无法像案例1那样导入我的模块?

python pythonpath pytest python-2.7

4
推荐指数
1
解决办法
4485
查看次数

Python:在个人Python包中包含第三方库

我想在我的Python脚本文件夹中包含一个第三方库,以将其全部分发(我不知道发行许可证,可以很好地分发该库)。这是为了避免将库安装在另一台机器上。

说我有一个脚本(my_script.py),它将调用此外部库。我试图将此库从Python目录的site-packages子目录复制到我有文件的目录中,但这似乎还不够(我认为原因是__init__.py该库的中,可能需要将文件夹放在其中的PYTHONPATH)。

为了使所有内容正常工作my_script.pysys.path在其中插入一些代码行以将其文件夹临时附加到其中是否合理?

例如,如果我有一个类似于以下的结构:

Main_folder
my_script.py
  /external_lib_folder
   __init__.py
   external_lib.py
Run Code Online (Sandbox Code Playgroud)

并且external_lib_folder是我从site-packages复制的外部库并将其插入到我的库中Main_folder,如果我将这些行(例如)写在中会很好my_script.py吗?

import os,sys
main_dir = os.path.dirname(os.path.abspath(__file__))
sys.path.append(main_dir)
Run Code Online (Sandbox Code Playgroud)

编辑

我最终选择了sys.path.append解决方案。我将这些行添加到我的my_script.py

import os, sys

# temporarily appends the folder containing this file into sys.path
main_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)),'functions')
sys.path.append(main_dir)
Run Code Online (Sandbox Code Playgroud)

无论如何,由于他花了很多时间帮助我(当然,因为他的解决方案也行得通),所以我选择将其作为问题的编辑内容并接受Torxed的答案。

python path environment-variables pythonpath python-2.7

4
推荐指数
1
解决办法
3705
查看次数

在Windows上的Anaconda下设置PYTHONPATH,无需提升特权

我有一台Windows 7机器,安装了32位anaconda,供本地用户使用。安装工作按预期进行:它允许我从命令行运行python和pip,切换环境等。

我还有一个我在“我的文档”中编写的代码库。我想补充像一个条目C:\Users\username\Documents\MyLibPYTHONPATH。通常这不是问题,但是我没有这台(工作发行的)计算机通过Windows UI修改环境变量所需的提升特权。

我正在寻找一种设置PYTHONPATH的方法。我只需要它在anaconda环境中工作(即,我只想能够使用该特定的解释器导入我的库)。sys.path.append在我的脚本中使用的解决方案是不可接受的。但是,我sys.path.append可以执行一些脚本,该脚本将在每次运行时自动执行python myscript.py

我怀疑有一种方法可以解决通过Windows UI施加的特权限制,因为运行conda info -a显示Anaconda安装程序能够将项目插入PATH,特别是C:\Users\username\AppData\Local\Continuum\Anaconda3\Library\bin;...

python windows environment-variables pythonpath anaconda

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