簡體   English   中英

package 的導入錯誤,我是否缺少 __init__.py

[英]Import error for package, am i missing an __init__.py

我有一個具有以下布局的小型 python 項目:

my-project
├── src
│   ├── lib 
│       └── app
│           └── data
│               └── car_sim.py
│
│
│
│
├── ptests 
│   ├── src 
│       └── lib 
│           └── app
│               └── data
│                   └── __init__.py
│                   └── cprofile.py

cprofile.py 包含:

from src.lib.app.data.car_sim import carRules


def my_example_func():
    #some-code

if __name__ == '__main__':
    my_example_func()

當我使用以下命令運行cprofile.py時:

$> cd 我的項目

$> python ptests/src/lib/app/data/cprofile.py

它給出了錯誤:

ModuleNotFoundError: No module named 'src'

我錯過了什么嗎? 我需要讓它從根目錄(頂層)工作嗎?

如果您希望一個文件夾被識別為 package,在您的情況下,這將是 src,它需要包含

__ 初始化 __.py

基本上,您已經在標題中回答了您自己的問題。 該文件可以為空。 我強烈建議您閱讀有關模塊、包及其結構的 python 文檔。

我建議你把這個文件放在你需要調用的同一個文件目錄下。 它可以減少出錯的概率!

或者您可以在調用中寫入文件的完整路徑。就像:

from my-project.src.lib.app.data.car_sim import carRules.

或者你可以試試這個方法。 添加環境變量:

變量名:PYTHONPATH

Path - 項目的路徑,如:

(E:\PYTHON\my-project.src.lib.app.data.car_sim)

路徑解決方案是這個問題的常見解決方案,我認為你可以嘗試一下。 如果還是不能解決你的問題,我想你可以按照我的建議,把兩個.py文件放在同一個目錄下,這樣你可以更直觀的閱讀信息,也不會是大概率當前的問題,希望能有所幫助你!

檢查這是否適合您。

import sys
sys.path.insert(0, "/path/my-project/src")
from src.lib.app.data.car_sim import carRules


def my_example_func():
    #some-code

if __name__ == '__main__':
    my_example_func()

暫無
暫無

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

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