簡體   English   中英

在Python2.7中導入錯誤,但在Python3中未導入

[英]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.

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