programing

Python이 동일한 폴더에서 모듈을 찾을 수 없음

magicmemo 2023. 6. 20. 21:31
반응형

Python이 동일한 폴더에서 모듈을 찾을 수 없음

내 파이썬은 어떻게든 같은 디렉토리에서 어떤 모듈도 찾을 수 없습니다.내가 뭘 잘못하고 있는 거지?(2.7항)

그래서 '2014_07_13_test'라는 디렉터리가 하나 있고 그 안에 두 개의 파일이 있습니다.

  1. test.py
  2. hello.py

안녕하세요?py:

# !/usr/local/bin/python
# -*- coding: utf-8 -*-

def hello1():
    print 'HelloWorld!'

그리고 테스트.py:

# !/usr/local/bin/python
# -*- coding: utf-8 -*-

from hello import hello1

hello1()

여전히 파이썬은 나에게 줍니다.

>>> Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<string>", line 4, in <module>
ImportError: No module named hello

뭐가 잘못됐나요?

test.py 에서 가져오기를 다음으로 변경합니다.

from .hello import hello1

당신의 코드는 문제가 없습니다. 당신의 문제는 당신이 어떻게 코드를 시작하느냐에 있습니다.

'2014_07_13_test' 디렉터리에서 python을 실행해야 합니다.

명령 프롬프트를 열고 'cd'를 '2014_07_13_test' 디렉토리로 이동합니다.

예를 들어:

$ cd /path/to/2014_07_13_test
$ python test.py

이렇게 디렉토리에 'cd'를 입력할 수 없는 경우 sys.path에 추가할 수 있습니다.

테스트 중.py:

import sys, os
sys.path.append('/path/to/2014_07_13_test')

또는 PYTHONPATH 설정/편집

그리고 모든 것이 잘 될 것입니다...

...'shebang' 행(두 파일의 첫 번째 행)에 약간의 오류가 있습니다. '#'과 '!' 사이에 공백이 없어야 합니다.

당신이 사용해야 할 더 좋은 쉐방이 있습니다.

또한 모든 파일에 쉐방 라인이 필요한 것도 아닙니다.셸에서 실행 파일로 실행하려는 파일만 사용할 수 있습니다.

비슷한 문제가 있었는데 파일의 디렉터리를 경로 목록에 명시적으로 추가하여 해결했습니다.

import os
import sys

file_dir = os.path.dirname(__file__)
sys.path.append(file_dir)

그 후, 저는 같은 디렉토리에서 가져오는 데 문제가 없었습니다.

여기 제가 사용하는 일반적인 솔루션이 있습니다.동일한 폴더에 있는 모듈에서 가져오기 문제를 해결합니다.

import os.path
import sys
sys.path.append(os.path.join(os.path.dirname(__file__), '..'))

모듈 상단에 "No module name xxxx"라는 오류를 표시합니다.

저의 경우, 파이썬은 코드를 하이픈과 같은 모듈 안에 넣었기 때문에 찾을 수 없었습니다.my-module가 로바을로 바꿨을 때.my_module효과가 있었습니다.

저는 이 문제에 부딪혔습니다.같은 디렉터리에 폴더가 세 개 있어서 어떤 폴더를 지정해야 했습니다.예: 폴더 가져오기 스크립트에서

저도 비슷한 문제가 있었습니다.모듈이 모두 같은 디렉토리에 있음에도 불구하고 가져올 수 없었습니다(importError).위의 해결책들을 시도해 보았지만 어떤 것도 저에게 효과가 없었습니다.제가 직접 길을 터야 했습니다.또한 코드가 제 대학 서버에서 실행되었기 때문에 경로를 수동으로 설정해야 했습니다.

import sys
sys.path.append(r'path_to_directory_where_all_modules_are')

모듈 검색 경로를 읽을 것을 권장합니다.

다음은 OP의 문제를 해결하지는 못하지만 제목과 오류는 정확히 제가 직면한 것입니다.

프로젝트에 다음이 있는 경우setup.py하여 현재할 수 .python3 -m pip install -e .또는python3 setup.py install또는python3 setup.py develop이 패키지는 설치되지만 편집 가능합니다(따라서 패키지를 가져올 때 코드가 변경됨).는이 없으면setup.py이해가 되는군요

어쨌든 OP가 직면한 문제는 더 이상 존재하지 않는 것 같습니까?

파일one.py:

def function():
    print("output")

파일two.py:

#!/usr/bin/env python3

import one
one.function()
chmod +x two.py # To allow execution of the python file
./two.py # Only works if you have a python shebang

Command line output: output

다른 솔루션은 '더러운' 것 같습니다.

테스트 파일이 2개인 OP의 경우 작업이 가능하도록 수정해도 괜찮을 것 같습니다.그러나 다른 실제 시나리오에서는 다른 답변에 나열된 방법은 권장되지 않을 수 있습니다.이들은 파이썬 코드를 수정하거나 유연성을 제한해야 하며(특정 디렉터리에서 파이썬 파일을 실행) 일반적으로 성가시게 합니다.프로젝트를 복제했는데 이런 일이 일어난다면 어떨까요?그것은 이미 다른 사람들을 위해 작동하고 코드를 변경할 필요가 없습니다.또한 선택한 답변은 사용자가 특정 폴더에서 스크립트를 실행하여 스크립트가 작동하도록 합니다.이것은 결코 좋지 않은 장기적인 짜증의 원인이 될 수 있습니다.또한 특정 python 폴더를 PATH에 추가할 것을 제안합니다(python 또는 명령줄을 통해 수행할 수 있음).다시 말하지만, 몇 달 후에 폴더의 이름을 바꾸거나 이동하면 어떻게 됩니까?이 페이지를 다시 검색해야 하며, 결국 경로를 설정해야 하며(몇 달 전에 정확히 이 작업을 수행했음), 경로를 업데이트해야 합니다(sys.path를 사용하고 프로그래밍 방식으로 설정할 수 있지만 여전히 불안정할 수 있음).많은 골칫거리들이 있습니다.

가져오려는 모든 모듈, 파일이 동일한 폴더에 있고 참조 경로가 아닌 이름만 지정하여 직접 선택해야 하는 경우 편집기 또는 터미널에서 모든 파일/모듈이 있는 기본 폴더를 열었을 것입니다.

터미널에서 실행해 보십시오. 먼저 올바른 디렉터리로 이동하십시오.

cd path to the root folder where all the modules are

비단뱀 script.py

또는 편집기에서 [F5](예: eVsCode)를 실행하는 경우 개별 파일이 아닌 전체 폴더를 엽니다.

몇 시간을 들여 다음과 같이 가져오기 작업을 수행한 후:

from business import Business
from .business import Business
import .Business
import business.Business

나는 마침내 내장된 파이썬 설치를 없애고 파이썬을 처음부터 설치했습니다.

c:\Program Files\Python310

그런 다음 내 PATH 변수가 새 설치로 최신인지 확인했습니다(그래서 우리가 보고 싶어하거나 만드는 것은 다음과 같은 항목입니다).c:\Program Files\Python310그리고.c:\Program Files\Python310\Scripts그리고.%USERPROFILE%\AppData\Roaming\Python\Python310\Scripts관리자 권한으로 cmd를 시작하고 get-pip.py 파일을 다운로드하여 live 상태의 cmd에서 실행합니다.python get-pip.py그리고 마침내 모든 것이 예상대로 작동했습니다.제가 왜, 무엇을 잘못했는지는 모르겠지만, 파이썬은 정말로 창에 깊이 통합되어야 할 필요가 있는 것 같습니다. 그렇지 않으면 쉬운 방식으로 작동하지 않습니다.자주 일어나는 일은 아니지만, 이 경우 리눅스에서 훨씬 더 잘 작동했습니다 ;)

가져오기는 Visual Studio Code의 "Create New File" 명령 대신 명령줄을 사용하여 새 파일을 재생성할 때만 사용할 수 있습니다.

명령줄에서:

touch your_file.py

그런 다음 다른 사람의 추천에 따라 수입합니다.

from your_file import your_function

또한 파일과 모듈의 철자에 오타가 있는지 다시 확인합니다.

예를들면

import passwords

파일 이름이 암호 누락 s로 저장된 경우.

명백하게 들릴 수도 있지만 위의 다른 모든 조언이 효과가 없을 때 때때로 이렇게 간단한 것일 수 있습니다 :)

이러한 문제는 프로젝트 경로가 변경될 때 발생합니다.다음을 사용해야 합니다.

cd 경로\to\the\files_path

단적으로

저는 이것을 우연히 만났어요.app.py 파일로 시작하는 플라스크 앱이 있습니다.제가 좀 정리하고 싶다고 결정했을 때 같은 디렉터리에 다른 파일들이 많이 흩어져 있어서 "local_lib"라는 하위 디렉터리를 만들고 app.py 을 제외한 모든 .py 파일을 디렉터리로 이동했습니다.그런 다음 app.py 의 가져오기 줄을 이렇게 변경했습니다.

from local_lib.user import User

하지만 local_lib 디렉토리 내에서 서로 파일을 가져올 수 없었습니다.제 디렉토리 구조는 이렇게 되어 있습니다...

/
  - app.py
  - local_lib/
     - users.py
     - app_config.py
     - data_ops.py
     - db_connect.py
     - forms.py
     - logger.py
     - search_dao.py

결국 애플리케이션이 app.py 이 있는 디렉토리의 컨텍스트에서 실행되고 있다는 것을 알게 되었습니다. 그래서 제가 가져온 모든 것을 이렇게 변경해야 했습니다.

from local_lib import search_dao
from local_lib import app_config as cfg
from local_lib.user import User
from local_lib import logger

그것은 엿같았습니다.PyCharm은 모든 수입품에 빨간색 물결선으로 밑줄이 쳐져 있기 때문에 그것을 좋아하지 않지만, 작동합니다.

저는 아직 파이썬을 배우고 있어서 짜증이 나지만, 사실은 그렇습니다.

작업 디렉토리가 여전히 상위 폴더로 설정되어 있을 수 있습니다.이 문제를 해결하려면 먼저 다음과 같이 현재 작업 디렉터리를 확인해야 합니다.

import os
print(os.getcwd())

모듈이 포함된 디렉토리와 다른 경우 올바른 디렉토리를 다음과 같이 설정합니다.

os.chdir(os.getcwd()+'/correct_project_folder')

같은 오류지만, 제 경우에 대한 답을 찾지 못했습니다. 누군가 제 해결책이 필요할 수도 있습니다.

에서 제가 파차르내만보것입다니를 만든 것 ..py인지 제 파니다가 없습니다. 하지만 어찌된 일인지 제 프로젝트 파일의 윈도우 디렉터리는 비어 있고 없습니다..py그래서 저는 확장자 이름을 바로 도릭으로 바꿨습니다. 그리고 그것은 작동했습니다.

확장명을 변경하기 전의 사진

언급URL : https://stackoverflow.com/questions/24722212/python-cant-find-module-in-the-same-folder

반응형