[英]Import Error in Python2.7 but not in Python3
我有一個本地編寫的python包,其結構類似於
package
├── __init__.py
├── __main__.py
├── tests
│ ├── __init__.py
│ └── package_tests.py
└── package
├── __init__.py
├── package.py
從項目的根目錄(該樹中第一個package
目錄的父目錄)在Python3 virtualenv中使用python -m package
運行時,此方法非常有用
但是,在Python2.7 virtualenv中運行時,在__main__.py
腳本中出現ImportError
,因為它試圖從package.py
導入函數package.py
__main__.py
:
import sys
from package.package.package import foo, bar
def main(args):
f = foo(args)
bar(f)
if __name__ == "__main__":
main(sys.argv[1:])
錯誤:
ImportError: No module named package
我需要更改使其與兩者兼容嗎?
(顯然,該程序包實際上並未稱為程序包)
盡管尋找解釋了很長時間,但在發布此問題后,我立即找到了解決方案。
查看python 2和3之間的導入更改后,我發現我只需要使用相對導入。
所以我的__main__.py
的導入行from .package.package import foo, bar
變成from .package.package import foo, bar
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.