나는 그것을 알아. 특히 python2에서 오는 매우 좌절.
.
모듈이 상대인지 절대인지에 관계없이 모듈 에 a를 추가해야합니다 .
다음과 같이 디렉토리 설정을 작성했습니다.
/main.py
--/lib
--/__init__.py
--/mody.py
--/modx.py
modx.py
def does_something():
return "I gave you this string."
mody.py
from modx import does_something
def loaded():
string = does_something()
print(string)
main.py
from lib import mody
mody.loaded()
main을 실행하면 이런 일이 발생합니다.
$ python main.py
Traceback (most recent call last):
File "main.py", line 2, in <module>
from lib import mody
File "/mnt/c/Users/Austin/Dropbox/Source/Python/virtualenviron/mock/package/lib/mody.py", line 1, in <module>
from modx import does_something
ImportError: No module named 'modx'
2to3을 실행했으며 핵심 출력은 다음과 같습니다.
RefactoringTool: Refactored lib/mody.py
--- lib/mody.py (original)
+++ lib/mody.py (refactored)
@@ -1,4 +1,4 @@
-from modx import does_something
+from .modx import does_something
def loaded():
string = does_something()
RefactoringTool: Files that need to be modified:
RefactoringTool: lib/modx.py
RefactoringTool: lib/mody.py
mody.py의 import 문을 수정하여 수정해야했습니다.
try:
from modx import does_something
except ImportError:
from .modx import does_something
def loaded():
string = does_something()
print(string)
그런 다음 main.py를 다시 실행하고 예상 출력을 얻었습니다.
$ python main.py
I gave you this string.
마지막으로, 정리하고 2에서 3 사이의 휴대 성을 제공하십시오.
from __future__ import absolute_import
from .modx import does_something