我需要在我的python項目上執行一個函數的導入。如何在python中從父文件夾導入函數?
我知道有幾十個關於SO的類似問題,但不幸的是,我找不到合適的解決方案,因爲答案要麼太具體問題,要麼太籠統,或者他們只是醜陋黑客(如使用絕對路徑操作)。
這裏是我的文件夾結構看起來像:
PythonClient:.
│ .gitignore
│ des.py
│ des_test.py
│ des_var2.py
│ gui.py
│ index.py
│ __init__.py
│
├───diffie_hellman
│ │ diffie_hellman.py
│ │ diffie_hellman_test.py
│ │ __init__.py
│ │
│ └───__pycache__
│ diffie_hellman.cpython-35.pyc
│
├───hashes
│ │ collision.py
│ │ hash_function.py
│ │ __init__.py
│ │
│ └───__pycache__
│ hash_function.cpython-35.pyc
│ __init__.cpython-35.pyc
│
└───__pycache__
des.cpython-35.pyc
des_var2.cpython-35.pyc
我需要從./diffie_hellman/diffie_hellman.py
導入./hashes/hash_function.py
。
./hashes/hash_function.py
文件包含唯一名爲hash_function
的函數。
我已經嘗試了很多方法來執行導入,但不能做到這一點。 我總是要麼
SystemError: Parent module '' not loaded, cannot perform relative import
,當我在我的import語句(即from .hashes.hash_function
)
使用.
或我得到這個:
ImportError: No module named 'hashes'
每個__init__.py
文件是空的。
這是我嘗試的名單:
from hashes import hash_function
from hashes.hash_function import hash_function
from .hashes.hash_function import hash_function
from ..hashes.hash_function import hash_function
import hashes
import hash_function
from .. import hash_function
from . import hash_function
from PythonClient.hashes.hash_function import hash_function
您能否幫我解決我的問題並瞭解如何使用此類導入?
PS:該解決方案不能在這裏stackoverflow.com/questions/14132789/
我建議你先閱讀http://stackoverflow.com/questions/14132789/python-relative-imports-for-the-billionth-time#answer-14132912。如果仔細閱讀,可以解決99%的python導入問題。 – laike9m