簡體   English   中英

python:如何導入包?

[英]python : how to import packages?

這是我的文件夾:

/Workspace
 somefiles.py
          /foopackage
           __init__.py
           foo1.py
           foo2.py

_ init _ .py包含

from foo1 import foo1
from foo2 import foo2

而且我想導入foopackage。 我已經試過了:

>>>import sys
>>>sys.path.append('/home/username/Workspace')
>>>import foopackage
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/username/Workspace/foopackage/__init__.py", line 1, in <module>
    from foo1 import foo1
ImportError: No module named 'foo1'

我試過了sys.path.append('/ home / username / Workspace / foopackage'),問題已經解決了。

我問我是否必須將每個軟件包目錄都添加到sys.path列表中才能導入它們?
還是其他錯誤?

如果您使用的是Python 3,則需要使用顯式的相對導入而不是隱式的相對導入,后者在Python 2中可以正常工作。嘗試將foopackage__init__.py文件更新為:

from .foo1 import foo1
from .foo2 import foo2

領先. 字符告訴Python foo1foo2是同級模塊,而不是您絕對指的頂級模塊。 一種替代方法是對它們使用絕對引用:

from foopackage.foo1 import foo1
from foopackage.foo2 import foo2

但是我個人認為這有點過分。 如果將來在某個時候更改軟件包名稱(或成為其他軟件包的子軟件包),它也會中斷。

有關相對進口變更的更多詳細信息,請參見PEP 328

暫無
暫無

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

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