相关疑难解决方法(0)

相对进口数十亿次

我来过这里:

还有很多我没有复制的网址,有些在SO上,有些在其他网站上,当我认为我有快速解决方案的时候.

永远反复出现的问题是:使用Windows 7,32位Python 2.7.3,如何解决这个"非包装中尝试相对导入"的消息?我在pep-0328上构建了一个包的精确副本:

package/
    __init__.py
    subpackage1/
        __init__.py
        moduleX.py
        moduleY.py
    subpackage2/
        __init__.py
        moduleZ.py
    moduleA.py
Run Code Online (Sandbox Code Playgroud)

我确实在适当的模块中创建了名为spam和eggs的函数.当然,它没有用.答案显然在我列出的第4个网址中,但这对我来说都是校友.我访问过的其中一个网址上有此回复:

相对导入使用模块的name属性来确定模块在包层次结构中的位置.如果模块的名称不包含任何包信息(例如,它设置为'main'),则解析相对导入,就像模块是顶级模块一样,无论模块实际位于文件系统的哪个位置.

上面的反应看起来很有希望,但它对我来说都是象形文字.所以我的问题是,如何让Python不回归"尝试非包装中的相对导入"?有一个答案涉及-m,据说.

有人可以告诉我为什么Python会给出错误信息,非包装意味着什么!,为什么以及如何定义"包裹",并且准确的答案足以让幼儿园儿童理解.

编辑:导入是从控制台完成的.

python import relative-path python-2.7

564
推荐指数
8
解决办法
17万
查看次数

如何使用PYTHONPATH

我怎样才能使用PYTHONPATH?当我尝试在路径中运行脚本时,找不到该文件.当我cd到包含脚本的目录时,脚本运行.那么PYTHONPATH有什么用呢?

$ echo $PYTHONPATH
:/home/randy/lib/python

$ tree -L 1 '/home/randy/lib/python' 
/home/randy/lib/python
??? gbmx_html.py
??? gbmx.py
??? __init__.py
??? __pycache__
??? scripts
??? yesno.py

$ python gbmx.py -h
python: can't open file 'gbmx.py': [Errno 2] No such file or directory

$ cd '/home/randy/lib/python'
Run Code Online (Sandbox Code Playgroud)

cd到文件目录后运行..

$ python gbmx.py -h
usage: gbmx.py [-h] [-b]
Run Code Online (Sandbox Code Playgroud)

为什么我不能使用PYTHONPATH?

python unix

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

从不同的工作目录导入Python模块

我有一个Python脚本,它使用内置模块,但也导入了许多与主脚本本身存在于同一目录中的自定义模块.

例如,我会打电话

python agent.py
Run Code Online (Sandbox Code Playgroud)

and agent.py有许多导入,包括:

import checks
Run Code Online (Sandbox Code Playgroud)

其中,检查位于与agent.py相同的目录中的文件中

agent/agent.py
agent/checks.py
Run Code Online (Sandbox Code Playgroud)

当前工作目录是代理/然后一切都很好.但是,如果我从任何其他目录调用agent.py,它显然无法导入checks.py等错误.

我如何确保可以导入自定义模块,无论从哪个例如调用agent.py

python /home/bob/scripts/agent/agent.py
Run Code Online (Sandbox Code Playgroud)

python

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

标签 统计

python ×3

import ×1

python-2.7 ×1

relative-path ×1

unix ×1