相关疑难解决方法(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万
查看次数

从另一个文件夹导入函数的简单方法,但要使用 pytest

我正在寻找一种从另一个文件夹导入函数的简单方法:

|--mylib
|   |--__init__.py
|   |--mylib2.py
|
|--mytest
|   |--other.py
|   |--test_one.py
|
|--mymain.py
Run Code Online (Sandbox Code Playgroud)

mylib2.py

def suma(a,b):
    return a+b
Run Code Online (Sandbox Code Playgroud)

mymain.py

from mylib.mylib2 import suma
def main():
    a=3
    b=4
    c=suma(a,b)
    print(c)


if __name__ == "__main__":
    main()
Run Code Online (Sandbox Code Playgroud)

其他.py

from mylib.mylib2 import suma

c=suma(1,2)
print(c)
Run Code Online (Sandbox Code Playgroud)

测试一.py

from mylib.mylib2 import suma

def test_nothing():
    assert True

def test_crash():
    e=0
    #d=30/e
    assert True
Run Code Online (Sandbox Code Playgroud)

由于某种原因,我无法正常从 other.py 调用 suma (因为我不知道如何正确地将 mylib2.py 包含在 mytest 文件夹中的文件中,但按照这个答案我可以这样做

python3 -m mytest.other
3
Run Code Online (Sandbox Code Playgroud)

问题是我不知道如何运行 pytest(包括库)

如果我进行 pytest 我会收到一条消息

    from mylib.mylib2 import …
Run Code Online (Sandbox Code Playgroud)

python pytest

0
推荐指数
1
解决办法
537
查看次数

标签 统计

python ×2

import ×1

pytest ×1

python-2.7 ×1

relative-path ×1