相关疑难解决方法(0)

从不同的文件夹导入文件

我有以下文件夹结构.

application/app/folder/file.py

我想从另一个驻留的Python文件中的file.py中导入一些函数

application/app2/some_folder/some_file.py

我试过了

from application.app.folder.file import func_name

和其他一些尝试,但到目前为止我无法正确导入.我怎样才能做到这一点?

python python-import importerror

1186
推荐指数
28
解决办法
121万
查看次数

从相对路径导入模块

如何根据相对路径导入Python模块?

例如,如果dirFoo包含Foo.pydirBar,和dirBar包含Bar.py,我怎么导入Bar.pyFoo.py

这是一个直观的表示:

dirFoo\
    Foo.py
    dirBar\
        Bar.py
Run Code Online (Sandbox Code Playgroud)

Foo希望包括Bar,但重组文件夹层次结构不是一种选择.

python relative-path python-import

749
推荐指数
16
解决办法
88万
查看次数

Python中的相对导入3

我想从同一目录中的另一个文件导入一个函数.

有时它适用于我,from .mymodule import myfunction但有时我会得到:

SystemError: Parent module '' not loaded, cannot perform relative import
Run Code Online (Sandbox Code Playgroud)

有时它适用from mymodule import myfunction,但有时我也得到:

SystemError: Parent module '' not loaded, cannot perform relative import
Run Code Online (Sandbox Code Playgroud)

我不明白这里的逻辑,我找不到任何解释.这看起来完全随机.

有人可以向我解释这一切背后的逻辑是什么吗?

python python-import python-3.x

589
推荐指数
16
解决办法
38万
查看次数

如何在同一目录或子目录中导入该类?

我有一个存储所有.py文件的目录.

bin/
   main.py
   user.py # where class User resides
   dir.py # where class Dir resides
Run Code Online (Sandbox Code Playgroud)

我想在main.py中使用user.pydir.py中的.
如何将这些Python类导入main.py
此外,User如果user.py位于子目录中,如何导入类?

bin/
    dir.py
    main.py
    usr/
        user.py
Run Code Online (Sandbox Code Playgroud)

python python-import

582
推荐指数
10
解决办法
84万
查看次数

相对进口数十亿次

我来过这里:

还有很多我没有复制的网址,有些在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万
查看次数

从父文件夹导入模块

我正在运行Python 2.5.

这是我的文件夹树:

ptdraft/
  nib.py
  simulations/
    life/
      life.py
Run Code Online (Sandbox Code Playgroud)

(我也在__init__.py每个文件夹中,为了便于阅读,这里省略了)

如何nib从模块内导入life模块?我希望有可能不用修补sys.path.

注意:正在运行的主模块位于该ptdraft文件夹中.

python directory module path python-import

552
推荐指数
21
解决办法
59万
查看次数

超出相对导入中的顶级包错误

看来这里已经有一些关于python 3中相对导入的问题了,但是在经历了很多这些问题后,我仍然找不到我的问题的答案.所以这是问题所在.

我有一个如下所示的包裹

package/
   __init__.py
   A/
      __init__.py
      foo.py
   test_A/
      __init__.py
      test.py
Run Code Online (Sandbox Code Playgroud)

我在test.py中有一行:

from ..A import foo
Run Code Online (Sandbox Code Playgroud)

现在,我在文件夹中package,我跑了

python -m test_A.test
Run Code Online (Sandbox Code Playgroud)

我收到了消息

"ValueError: attempted relative import beyond top-level package"
Run Code Online (Sandbox Code Playgroud)

但如果我在父文件夹中package,例如,我运行:

cd ..
python -m package.test_A.test
Run Code Online (Sandbox Code Playgroud)

一切都好.

现在我的问题是: 当我在文件夹中时package,我在test_A子包中运行模块test_A.test,根据我的理解,..A只上升一个级别,它仍然在package文件夹中,为什么它给出了消息说beyond top-level package.导致此错误消息的原因是什么?

python import package

238
推荐指数
12
解决办法
18万
查看次数

TypeError:module .__ init __()最多需要2个参数(给定3个)

我在一个名为的文件中定义了一个类Object.py.当我尝试从另一个文件中继承此类时,调用构造函数会引发异常:

TypeError: module.__init__() takes at most 2 arguments (3 given)
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

import Object

class Visitor(Object):
    pass

instance = Visitor()  # this line throws the exception
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

python python-3.x

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

SystemError:父模块''未加载,无法执行相对导入

我有以下目录:

myProgram
??? app
    ??? __init__.py
    ??? main.py 
    ??? mymodule.py
Run Code Online (Sandbox Code Playgroud)

mymodule.py:

class myclass(object):

def __init__(self):
    pass

def myfunc(self):
    print("Hello!")
Run Code Online (Sandbox Code Playgroud)

main.py:

from .mymodule import myclass

print("Test")
testclass = myclass()
testclass.myfunc()
Run Code Online (Sandbox Code Playgroud)

但是当我运行它时,我得到了这个错误:

Traceback (most recent call last):
  File "D:/Users/Myname/Documents/PycharmProjects/myProgram/app/main.py", line 1, in <module>
    from .mymodule import myclass
SystemError: Parent module '' not loaded, cannot perform relative import
Run Code Online (Sandbox Code Playgroud)

这有效:

from mymodule import myclass
Run Code Online (Sandbox Code Playgroud)

但是当我输入时,我没有自动完成,并且有一条消息:"未解析的引用:mymodule"和"未解析的引用:myclass".在我正在处理的其他项目中,我收到错误:"ImportError:没有名为'mymodule'的模块.

我能做什么?

python python-3.x

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

来自兄弟文件夹的Python导入模块

我已经经历了许多Python相关的导入问题,但我无法理解这个问题/让它工作......

我的目录结构是:

Driver.py

A/
      Account.py
      __init__.py

B/
      Test.py
      __init__.py
Run Code Online (Sandbox Code Playgroud)

====================

Driver.py

from B import Test
Run Code Online (Sandbox Code Playgroud)

=========

Account.py

class Account:
def __init__(self):
    self.money = 0
Run Code Online (Sandbox Code Playgroud)

====================

Test.py

from ..A import Account
Run Code Online (Sandbox Code Playgroud)

==================

当我试图跑

python Driver.py

我收到了错误

Traceback(最近一次调用最后一次):

来自B进口测试

Driver.py从..A导入帐户输入"B/Test.py",第1行

ValueError:尝试相对导入超出toplevel包

python import module relative-path

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