<질문>
파이썬에서 모듈 가져 오기가 어떻게 작동하는지 이해하는 데 어려움을 겪고 있습니다 (다른 언어로도 한 번도 해본 적이 없습니다).
내가 가지고 있다고 가정 해 봅시다.
myapp/__init__.py
myapp/myapp/myapp.py
myapp/myapp/SomeObject.py
myapp/tests/TestCase.py
이제 나는 다음과 같은 것을 얻으려고합니다.
myapp.py
===================
from myapp import SomeObject
# stuff ...
TestCase.py
===================
from myapp import SomeObject
# some tests on SomeObject
그러나 파이썬이 그것을 볼 수 없기 때문에 나는 확실히 잘못하고 있습니다.myapp
모듈입니다.
ImportError: No module named myapp
<답변1>
특정 경우에는 가져 오려는 것 같습니다.SomeObject
myapp.py 및 TestCase.py 스크립트에서. myapp.py에서
import SomeObject
같은 폴더에 있기 때문입니다. TestCase.py의 경우
from ..myapp import SomeObject
하나, 이는 패키지에서 TestCase를 가져 오는 경우에만 작동합니다. 직접 실행하려면python TestCase.py
, 당신은 당신의 경로를 망쳐 야 할 것입니다. 이것은 Python 내에서 수행 할 수 있습니다.
import sys
sys.path.append("..")
from myapp import SomeObject
일반적으로 권장되지는 않습니다.
일반적으로 다른 사람이 Python 패키지를 사용하도록하려면 다음을 사용해야합니다.distutils설정 스크립트를 생성합니다. 이렇게하면 누구나 다음과 같은 명령을 사용하여 패키지를 쉽게 설치할 수 있습니다.python setup.py install
컴퓨터의 모든 곳에서 사용할 수 있습니다. 패키지에 대해 진지하게 생각한다면 Python 패키지 색인에 추가 할 수도 있습니다.PyPI.
<답변2>
함수import
PYTHONPATH 환경에서 파일을 찾습니다. 변수 및 로컬 디렉토리. 따라서 모든 파일을 동일한 디렉토리에 넣거나 경로 입력을 터미널로 내보낼 수 있습니다.
export PYTHONPATH="$PYTHONPATH:/path_to_myapp/myapp/myapp/"
<답변3>
내보내기 경로는 좋은 방법입니다. 또 다른 방법은 사이트 패키지 위치에 .pth를 추가하는 것입니다. 내 Mac에서 파이썬은 아래 표시된 / Library / Python에 사이트 패키지를 유지합니다.
/Library/Python/2.7/site-packages
/Library/Python/2.7/site-packages/awesome.pth에 awesome.pth라는 파일을 만들고 파일에 내 멋진 모듈을 참조하는 다음 경로를 넣습니다.
/opt/awesome/custom_python_modules
<답변4>
당신은 시도 할 수 있습니다
from myapp.myapp import SomeObject
프로젝트 이름이 myapp.py와 동일하기 때문에 먼저 프로젝트 문서를 검색합니다.
<답변5>
첫 번째 myapp 디렉토리에서 u는 setup.py 파일을 추가하고 setup.py에 두 개의 파이썬 코드를 추가 할 수 있습니다.
from setuptools import setup
setup(name='myapp')
명령 줄의 첫 번째 myapp 디렉토리에서 pip install -e를 사용합니다. 패키지를 설치하려면
<답변6>
pip install
Windows 10의 경우 기본적으로 관리자 권한이 필요한 디렉토리 인 'Program Files / PythonXX / Lib / site-packages'에 설치됩니다. 그래서 내 문제를관리자 권한으로 pip 설치 실행(관리자 계정으로 로그인 한 경우에도 관리자 권한으로 명령 프롬프트를 열어야합니다). 또한 파이썬에서 pip를 호출하는 것이 더 안전합니다.
예 :python -m pip install <package-name>
대신에pip install <package-name>
<답변7>
당신은 가지고 있어야합니다
__init__.py
상호 작용해야하는 코드가있는 모든 폴더에서 또한 가져 오려는 파일이 동일한 수준에 있더라도 가져올 때마다 프로젝트의 최상위 폴더 이름을 지정해야합니다.
<답변8>
제 경우에는 Windows 파일 이름이 대소 문자를 구분하지 않지만 Python 가져 오기는 Windows 대 Python 놀라움이었습니다. 그래서 만약 당신이Stuff.py
이 이름을 그대로 가져와야합니다.
<답변9>
내가 모듈을 작성한다고하자
import os
my_home_dir=os.environ['HOME'] // in windows 'HOMEPATH'
file_abs_path=os.path.join(my_home_dir,"my_module.py")
with open(file_abs_path,"w") as f:
f.write("print('I am loaded successfully')")
import importlib
importlib.util.find_spec('my_module') ==> cannot find
모듈을 찾을 위치를 파이썬에게 알려줘야합니다. 경로를 추가해야합니다.sys.path
import sys
sys.path.append(file_abs_path)
지금importlib.util.find_spec('my_module')
보고:
ModuleSpec(name='my_module', loader=<_frozen_importlib_external.SourceFileLoader object at 0x7fa40143e8e0>, origin='/Users/name/my_module.py')
모듈을 생성하고 파이썬에 경로를 알려 줬습니다. 이제 가져올 수 있습니다.
import my_module
//I am loaded successfully
'개발 > Python' 카테고리의 다른 글
한 줄의 Python 코드가 들여 쓰기 중첩 수준을 알 수 있습니까? (0) | 2021.01.21 |
---|---|
파이썬에 내장 식별 기능이 있습니까? (0) | 2021.01.21 |
[파이썬] 기본이 아닌 인수가 기본 인수를 따를 수없는 이유는 무엇입니까? (0) | 2021.01.21 |
Python에서 병렬 프로그래밍을 수행하는 방법은 무엇입니까? (0) | 2021.01.21 |