相关疑难解决方法(0)

Python的sys.path在哪里初始化?

Python的sys.path在哪里初始化?

UPD:Python在引用PYTHONPATH之前添加了一些路径:

    >>> import sys
    >>> from pprint import pprint as p
    >>> p(sys.path)
    ['',
     'C:\\Python25\\lib\\site-packages\\setuptools-0.6c9-py2.5.egg',
     'C:\\Python25\\lib\\site-packages\\orbited-0.7.8-py2.5.egg',
     'C:\\Python25\\lib\\site-packages\\morbid-0.8.6.1-py2.5.egg',
     'C:\\Python25\\lib\\site-packages\\demjson-1.4-py2.5.egg',
     'C:\\Python25\\lib\\site-packages\\stomper-0.2.2-py2.5.egg',
     'C:\\Python25\\lib\\site-packages\\uuid-1.30-py2.5.egg',
     'C:\\Python25\\lib\\site-packages\\stompservice-0.1.0-py2.5.egg',
     'C:\\Python25\\lib\\site-packages\\cherrypy-3.0.1-py2.5.egg',
     'C:\\Python25\\lib\\site-packages\\pyorbited-0.2.2-py2.5.egg',
     'C:\\Python25\\lib\\site-packages\\flup-1.0.1-py2.5.egg',
     'C:\\Python25\\lib\\site-packages\\wsgilog-0.1-py2.5.egg',
     'c:\\testdir',
     'C:\\Windows\\system32\\python25.zip',
     'C:\\Python25\\DLLs',
     'C:\\Python25\\lib',
     'C:\\Python25\\lib\\plat-win',
     'C:\\Python25\\lib\\lib-tk',
     'C:\\Python25',
     'C:\\Python25\\lib\\site-packages',
     'C:\\Python25\\lib\\site-packages\\PIL',
     'C:\\Python25\\lib\\site-packages\\win32',
     'C:\\Python25\\lib\\site-packages\\win32\\lib',
     'C:\\Python25\\lib\\site-packages\\Pythonwin']
Run Code Online (Sandbox Code Playgroud)

我的PYTHONPATH是:

    PYTHONPATH=c:\testdir
Run Code Online (Sandbox Code Playgroud)

我想知道PYTHONPATH之前的那些路径来自哪里?

python path sys

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

为什么使用sys.path.append(path)而不是sys.path.insert(1,path)?

编辑:基于Ulf Rompe的注释,重要的是你使用"1"代替"0",否则你将破坏sys.path.

我已经做了很长一段时间的python(超过一年),我总是很困惑,为什么人们建议你使用sys.path.append()而不是sys.path.insert().让我来证明一下.

假设我正在开发一个名为PyWorkbooks的模块(安装在我的计算机上),但我同时处理一个包含PyWorkbooks的不同模块(比方说PyJob).当我正在使用PyJob时,我发现PyWorkbooks中的错误正在纠正,所以我想导入一个开发版本.

有两种方法可以同时工作(例如,我可以将PyWorkbooks项目放在PyJob中),但有时我仍然需要使用路径.但是,我不能简单地对sys.path.append()PyWorkbooks所在的文件夹执行操作.为什么?因为python会首先找到我安装的PyWorkbooks!

这就是你必须做一个sys.path.insert(1,path_to_dev_pyworkbooks)的原因

综上所述:

sys.path.append(path_to_dev_pyworkbooks)
import PyWorkbooks # does NOT import dev pyworkbooks, imports installed one
Run Code Online (Sandbox Code Playgroud)

要么:

sys.path.insert(1, path_to_dev_pyworkbooks) # based on comments you should use **1 not 0**
import PyWorkbooks # imports correct file
Run Code Online (Sandbox Code Playgroud)

这对我来说已经引起了一些困扰,如果我们(作为一个社区)开始推荐sys.path.insert(1, path),我真的很喜欢它,好像你是手动插入一条路径我认为可以说这是你想要的路径用!

或者我有什么不对劲?这个问题有时会困扰我,我希望它在公开场合!

python path python-import pythonpath

81
推荐指数
3
解决办法
11万
查看次数

PYTHONPATH与sys.path

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

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

Project
    setup.py
    package
        __init__.py
        lib.py
        script.py
Run Code Online (Sandbox Code Playgroud)

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

但是,当从用户目录工作时,还需要做其他事情.我的解决方案是将我的PYTHONPATH设置为包含"〜/ Project".另一位开发人员希望将这行代码放在script.py的开头:

sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
Run Code Online (Sandbox Code Playgroud)

这样Python就可以找到本地副本了package.lib.

我认为这是一个坏主意,因为这行只对开发人员或从本地副本运行的人有用,但我不能说明为什么这是一个坏主意.

我们应该使用PYTOHNPATH,sys.path,还是要么?

python python-import pythonpath sys.path

79
推荐指数
6
解决办法
8万
查看次数

Flake8属性错误:'module'对象没有属性'normalize_paths'

这是我flake8在验证期间的输出:

Traceback (most recent call last):
  File "/usr/local/bin/flake8", line 11, in <module>
    sys.exit(main())
  File "/usr/local/lib/python2.7/dist-packages/flake8/main.py", line 25, in main
    flake8_style = get_style_guide(parse_argv=True, config_file=DEFAULT_CONFIG)
  File "/usr/local/lib/python2.7/dist-packages/flake8/engine.py", line 244, in get_style_guide
    options.exclude.extend(pep8.normalize_paths(EXTRA_EXCLUDE))
AttributeError: 'module' object has no attribute 'normalize_paths'
Run Code Online (Sandbox Code Playgroud)

为什么我不能使用它?

python emacs flymake flake8 elpy

9
推荐指数
1
解决办法
680
查看次数

在多个本地项目中使用 python 文件/函数

我有多个 python 项目,每个项目都有一个实用程序文件,它们都具有相同的功能。

如何设置某种可以导入到所有本地项目的本地 python 库?我知道 Rodeo 有一些功能,你可以用它来指定一些函数/文件在多个 python 项目中可用。有没有办法在牛仔竞技之外做到这一点?

我不想创建一个可以通过 pip 使用的库(因为这意味着将它暴露给所有人)

python

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

标签 统计

python ×5

path ×2

python-import ×2

pythonpath ×2

elpy ×1

emacs ×1

flake8 ×1

flymake ×1

sys ×1

sys.path ×1