EMP*_*EMP 133 python pylint virtualenv pythonpath
我正在Windows上的Wing IDE中运行PyLint.我的项目中有一个子目录(包),在包中我从顶层导入一个模块,即.
__init__.py
myapp.py
one.py
subdir\
__init__.py
two.py
Run Code Online (Sandbox Code Playgroud)
在two.py我内部import one,这在运行时工作正常,因为顶级目录(从中myapp.py运行)位于Python路径中.但是,当我在two.py上运行PyLint时,它给出了一个错误:
F0401: Unable to import 'one'
Run Code Online (Sandbox Code Playgroud)
我该如何解决?
Bri*_*unt 127
我知道有两种选择.
一,更改PYTHONPATH环境变量以包括模块上方的目录.
或者,编辑~/.pylintrc以包含模块上方的目录,如下所示:
[MASTER]
init-hook='import sys; sys.path.append("/path/to/root")'
Run Code Online (Sandbox Code Playgroud)
(或者在其他版本的pylint中,init-hook要求您将[General]更改为[MASTER])
这两种选择都应该有效.
希望有所帮助.
x-m*_*gix 30
我在这个页面上找到的这个问题的一般答案请不要打开,网站被 BUGED
创建.pylintrc和添加
[MASTER]
init-hook="from pylint.config import find_pylintrc;
import os, sys; sys.path.append(os.path.dirname(find_pylintrc()))"
Run Code Online (Sandbox Code Playgroud)
小智 25
改变路径的解决方案init-hook是好的,但我不喜欢我必须在那里添加绝对路径的事实,因此我不能在项目的开发人员之间共享这个pylintrc文件.这个使用pylintrc文件的相对路径的解决方案对我来说效果更好:
[MASTER]
init-hook="from pylint.config import find_pylintrc; import os, sys; sys.path.append(os.path.dirname(find_pylintrc()))"
Run Code Online (Sandbox Code Playgroud)
请注意,它pylint.config.PYLINTRC也存在且具有相同的值find_pylintrc().
mac*_*acm 24
1)sys.path是一个列表.
2)问题是有时sys.path不是你的virtualenv.path你想在你的virtualenv中使用pylint
3)如上所述,使用init-hook(注意'和'pylint的解析是严格的)
[Master]
init-hook='sys.path = ["/path/myapps/bin/", "/path/to/myapps/lib/python3.3/site-packages/", ... many paths here])'
Run Code Online (Sandbox Code Playgroud)
要么
[Master]
init-hook='sys.path = list(); sys.path.append("/path/to/foo")'
Run Code Online (Sandbox Code Playgroud)
..和
pylint --rcfile /path/to/pylintrc /path/to/module.py
Run Code Online (Sandbox Code Playgroud)
unm*_*ted 19
你__init__.py在两个目录中都有一个空文件让python知道dirs是模块吗?
当你没有从文件夹中运行时的基本轮廓(即可能来自pylint的,虽然我没有使用它)是:
topdir\
__init__.py
functions_etc.py
subdir\
__init__.py
other_functions.py
Run Code Online (Sandbox Code Playgroud)
这是Python解释器是如何知道模块的不参考当前目录,因此如果pylint的是从自身的绝对路径运行将能够访问functions_etc.py为topdir.functions_etc或者topdir.subdir.other_functions,只要topdir是对的PYTHONPATH.
更新:如果问题不是__init__.py文件,可能只是尝试复制或移动模块c:\Python26\Lib\site-packages- 这是放置其他软件包的常见位置,并且肯定会在您的python路径上.如果你知道如何做Windows符号链接或等效的(我没有!),你可以这样做.这里有更多选项:http://docs.python.org/install/index.html,包括将sys.path附加到开发代码的用户级目录的选项,但实际上我通常只是象征性地链接我的本地开发目录到网站包 - 复制它具有相同的效果.
小智 14
可以通过在venv下配置pylint路径来解决此问题:$ cat .vscode / settings.json
{
"python.pythonPath": "venv/bin/python",
"python.linting.pylintPath": "venv/bin/pylint"
}
Run Code Online (Sandbox Code Playgroud)
muT*_*hie 12
我pylintrc在项目的根目录中添加了一个新文件
[MASTER]
init-hook='import sys; sys.path.append(".")'
Run Code Online (Sandbox Code Playgroud)
它在 PyCharm IDE 中对我有用
我不知道它如何与WingIDE一起使用,但是为了在Geany中使用PyLint,我将外部命令设置为:
PYTHONPATH=${PYTHONPATH}:$(dirname %d) pylint --output-format=parseable --reports=n "%f"
Run Code Online (Sandbox Code Playgroud)
其中%f是文件名,%d是路径.可能对某人有用:)
我必须更新系统PYTHONPATH变量才能添加我的 App Engine 路径。就我而言,我只需编辑我的~/.bashrc文件并添加以下行:
export PYTHONPATH=$PYTHONPATH:/path/to/google_appengine_folder
事实上,我尝试设置第init-hook一个,但这并没有在我的代码库中一致地解决问题(不知道为什么)。一旦我将它添加到系统路径(通常可能是个好主意),我的问题就消失了。
| 归档时间: |
|
| 查看次数: |
152907 次 |
| 最近记录: |