簡體   English   中英

Python 3:如何從包中的模塊導入__init__.py?

[英]Python 3: How do I import __init__.py from a module in its package?

我使用的是Python 3.7。 我創建了一個foo模塊,它具有以下文件夾布局:

foo/
    __init__.py

我將foo軟件包的所有代碼都放在__init__.py文件中。 我可以正常運行其他腳本中的import foo

稍后,我想向該軟件包添加一個util.py文件。 文件夾布局變為:

foo/
    __init__.py
    util.py

我的問題是:在util.py中 ,我想訪問__init__.py中定義的類,函數等。 如何從util.py文件中“導入” __init__.py 這有可能嗎? 如果必須重新排列我的代碼,那怎么辦?

我嘗試將以下內容添加到util.py中

from . import __init__
print(__init__.some_var_in_init)

但我收到此錯誤消息:

Traceback (most recent call last):
  File "util.py", line 3, in <module>
    print(__init__.some_var_in_init)
AttributeError: 'method-wrapper' object has no attribute 'some_var_in_init'

所以我想這不是解決之道。

import foo可以正常工作。

我找到了答案。 添加import foo是不夠的,但是還必須添加父文件夾:

import os, sys
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))

import foo
print(foo.some_var_in_init)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM