직접 가져오기
예를 들어 ma_main의 <code>env 패키지
에 있는 make_env.py /code> 파일에 있는 함수를 읽으려면<code>ma_main.py
中导入env包
中的make_env.py
文件, 从而读取其中的函数
因为此时ma_main.py
和env包
都在src
这个根目录下, 所以可以直接import继续导入
这里from
再import
是因为make_env.py
中只有一个函数就是make_env()
, 所以直接import该函数, 在调用的时候可以直接写名字
如果是from env import make_env
, 那么调用make_env.py
中的make_env()函数
时, 还要用.
进行声明
PS: from env import make_env
和import env.make_env
是一样的
如果执行文件和模块不在同一目录,这时候直接import是找不到自定义模块的。
例如这种情况: 要在main.py
中导入pwcong
包从而执行__init__.py
的一些方法
然而main.py
在./Torch/main/
下, 而pwcong
在./Torch/
下
即不在同一个目录, 此时main.py
文件python解释器模块搜索的路径列表中不包含是./Torch
所以这时候就要用python中自带的sys包
导入自定义模块的路径, 从而手动添加Python解释器在main.py
中的模块搜索的路径列表 , 之后才能成功导入
在Python中,当你导入一个模块时,解释器会从一个路径列表中查找该模块。
这个路径列表通常包括Python解释器安装的默认路径,以及在环境变量PYTHONPATH
中指定的任何路径。
使用sys.path.append()
函数可以向这个路径列表中添加新的路径,以便解释器能够找到你指定的模块。
添加新路径后,你就可以通过import
语句导入该路径下的模块。
这并不会影响命名空间,而只是告诉解释器在哪里可以找到要导入的模块。
导入自定义模块的步骤如下:
先导入sys模块
然后通过sys.path.append(path)
函数来导入自定义模块所在的目录
导入自定义模块。
即在main.py
的最上面几行写入如下代码手动定义该文件的python解释器路径
import sys sys.path.append(r"C:\Users\PC\Desktop\Torch") # 要加上地址生命符r, 并且要是绝对路径
在__init__.py
中定义一个hello函数, 打印hello
通过sys.path.append添加解释器模块搜索的路径, 然后通过模块名执行函数
一个模块必须要有__init__.py
文件
在Python中,一个目录要被视为一个包,它必须包含一个__init__.py
文件。这个文件可以是一个空文件,或者包含一些包初始化的代码。
没有__init__.py
文件的目录就只是一个目录, 其他py文件无法导入该目录下的任何py文件中的函数
__init__.py
文件可能包含:
声明命名空间:__init__.py
ma_main.py
와 env 패키지
가 모두 src 이므로 직접 가져오고 계속해서 가져올 수 있습니다여기from
import
를 다시 실행하는 이유는 make_env.py
에 make_env()
라는 함수가 하나만 있기 때문입니다. >, 호출 시 이 함수를 직접 가져올 수 있습니다. from env import make_env
인 경우 make_env.py
에서 make_env() 함수
를 호출할 때 .
from env import make_env
는 import env.make_env
와 동일합니다.실행 파일과 대상 가져온 모듈은 다음과 같습니다. 같은 디렉터리에 있지 않음실행 파일과 모듈이 같은 디렉터리에 있지 않으면 직접 가져오기는 사용자 정의 모듈을 찾을 수 없습니다.
🎜🎜🎜🎜🎜예를 들어, 이 경우:main.py
에서 pwcong
패키지를 가져와서 __init__.py🎜🎜의 일부 메소드는 main.py
가 ./Torch/main/
아래에 있고 pwcong
는 아래에 있습니다./Torch/
는 같은 디렉토리에 없습니다. 이때 main.py
파일 🎜은 검색된 경로 목록에 를 포함하지 않습니다. ./Torch
🎜🎜따라서 이때 Python과 함께 제공되는 sys 패키지
를 사용하여 🎜커스텀 모듈의 경로🎜를 가져와야 합니다. 그런 다음 main에 Python 인터프리터를 수동으로 추가하세요. py
의 🎜 모듈 검색 경로 목록🎜은 🎜PYTHONPATH
에 지정된 모든 경로 🎜가 포함됩니다. 🎜🎜🎜🎜통역사가 지정한 모듈을 찾을 수 있도록 sys.path.append()
함수를 사용하여 이 경로 목록에 🎜새 경로를 추가🎜하세요. 🎜🎜🎜🎜새 경로를 추가한 후 import
문을 통해 경로 아래의 모듈을 가져올 수 있습니다. 🎜🎜🎜🎜이것은 🎜네임스페이스에 영향을 미치지 않고 🎜단순히 🎜통역사에게 가져올 모듈을 찾을 위치를 🎜알려줍니다. 🎜🎜main.py
의 맨 위 몇 줄에 다음 코드를 작성하여 파일의 Python 인터프리터 경로를 수동으로 정의합니다🎜rrreee🎜__init__.py에서
> hello 함수를 정의하고 hello🎜🎜🎜🎜sys를 통해 인쇄합니다. .path.append 인터프리터 모듈에서 검색한 경로를 추가한 후, 모듈명을 통해 함수 실행 🎜🎜🎜🎜a 모듈에는 __init__.py
파일이 있어야 합니다. 🎜🎜Python에서 🎜디렉토리🎜가 🎜패키지🎜로 간주되려면 해당 파일에 __init__가 포함되어야 합니다. py
파일입니다. 이 파일은 빈 파일이거나 일부 패키지 초기화 코드를 포함할 수 있습니다. 🎜🎜__init__.py
파일이 없는 디렉터리는 단지 디렉터리일 뿐입니다. 다른 py 파일은 이 디렉터리에 있는 py 파일의 기능을 가져올 수 없습니다. 포함: 🎜__init__.py
파일에는 변수, 클래스 및 함수 선언이 포함될 수 있습니다. 🎜🎜🎜🎜🎜초기화 코드 🎜 : 🎜init🎜.py 파일에는 패키지를 가져올 때 실행될 초기화 코드가 포함될 수 있습니다. 이는 패키지 구성이나 패키지의 종속성 설치 확인과 같은 특정 필수 작업을 수행하는 데 사용할 수 있습니다. 🎜🎜🎜🎜🎜Submodule import🎜: 🎜init🎜.py 파일에는 다른 모듈을 가져오는 코드가 포함될 수 있습니다. 이는 사용자가 액세스할 수 있도록 패키지의 네임스페이스에 하위 모듈을 추가하는 데 사용할 수 있습니다. 🎜Python에서 네임스페이스는 변수와 함수 이름이 포함된 사전으로, 각 식별자의 이름과 값을 기록하는 데 사용됩니다. Python 인터프리터의 각 네임스페이스는 사전의 키-값 쌍을 통해 변수와 함수에 액세스할 수 있는 사전 개체입니다.
Python에는 세 가지 네임스페이스가 있습니다.
내장 네임스페이스: Python 인터프리터에 내장된 변수와 함수를 포함합니다. 이러한 변수와 함수는 모듈을 가져오지 않고도 프로그램에서 직접 사용할 수 있습니다. print() 함수, len()
함수 등 print()
函数、len()
函数等。
全局命名空间:在模块定义时创建,包含了在模块文件中定义的变量和函数。可以在模块中的任何地方使用这些变量和函数。
局部命名空间:在函数调用时创建,包含了函数中定义的变量和函数。只能在函数内部使用这些变量和函数。
命名空间的作用是避免不同命名空间之间的变量或函数名冲突,并且可以更好地管理程序中的变量和函数。在Python中,可以通过使用global
和nonlocal
global
및 nonlocal
키워드를 사용하여 전역 및 비지역 네임스페이스의 변수에 액세스하고 수정할 수 있습니다. 🎜위 내용은 Python 패키지를 가져오는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!