다른 Python 파일을 Import하려면 어떻게 해야 하나요?
Python에서 파일을 Import하려면 어떻게 해야 하나요?Import 대상:
- 파일:
file.py
) - 폴더
- 사용자 입력에 따라 실행 시 동적으로 파일
- 파일의 특정 부분(예를 들어 단일 기능)
python 파일을 Import하는 방법에는 장단점이 있습니다.
자신에게 맞는 첫 번째 Import 전략을 성급하게 선택하지 마십시오.그렇지 않으면 나중에 요구를 충족하지 못할 때 코드베이스를 다시 작성해야 합니다.
가장 쉬운 예 1번부터 설명하고, 다음으로 가장 전문적이고 견고한 예 7번부터 설명하겠습니다.
예 1, python 인터프리터를 사용하여 python 모듈을 Import합니다.
다음 내용을 /home/el/foo/fox.py에 저장합니다.
def what_does_the_fox_say(): print("vixens cry")
python interpreter에 접속합니다.
el@apollo:/home/el/foo$ python Python 2.7.3 (default, Sep 26 2013, 20:03:06) >>> import fox >>> fox.what_does_the_fox_say() vixens cry >>>
interpreter를 함수 python을 했습니다.
what_does_the_fox_say()
.py.foxpy에서 하실 수 있습니다.
2, "2, "를 사용execfile
또는 exec
스크립트에서 (Python 3의 경우) 다른 python 파일을 실행합니다.
이것을 /home/el/foo2/mylib에 넣습니다.py:
def moobar(): print("hi")
이것을 /home/el/foo2/main에 넣습니다.py:
execfile("/home/el/foo2/mylib.py") moobar()
파일을 실행합니다.
el@apollo:/home/el/foo$ python main.py hi
함수 moobar는 mylib.py에서 Import되어 기본적으로 사용할 수 있게 되었습니다.화이
예 3, 사용 방법...Import...기능:
다음 내용을 /home/el/foo3/chekov.py에 저장합니다.
def question(): print "where are the nuclear wessels?"
이것을 /home/el/foo3/main에 넣습니다.py:
from chekov import question question()
다음과 같이 실행합니다.
el@apollo:/home/el/foo3$ python main.py where are the nuclear wessels?
py에서 다른 chekov.py 를 사용하지 할 수 .
import *
예 4, Import한 파일 위치와 다른 파일 위치에 있는 경우 riaa.py을 Import합니다.
이것을 /home/el/foo4/strup/ria에 넣습니다.py:
def watchout(): print "computers are transforming into a noose and a yoke for humans"
이것을 /home/el/foo4/main에 넣습니다.py:
import sys import os sys.path.append(os.path.abspath("/home/el/foo4/stuff")) from riaa import * watchout()
실행:
el@apollo:/home/el/foo4$ python main.py computers are transforming into a noose and a yoke for humans
그러면 다른 디렉토리에서 외부 파일의 모든 것이 Import됩니다.
5, 를 합니다.os.system("python yourfile.py")
import os
os.system("python yourfile.py")
예 6, python 스타트업 훅을 통해 파일을 Import합니다.
업데이트: 이 예는 이전에는 python2와 3 모두에서 사용 가능했지만 현재는 python2에서만 사용 가능합니다.python3는 사용자 정의 프로그램보다 먼저 코드를 글로벌 네임스페이스에 삽입하기 위해 사용하는 낮은 속도의 python 라이브러리 라이터에 의해 악용되었기 때문에 이 사용자 스타트업 훅 기능 세트를 제거했습니다.이것이 python3에서 작동하도록 하려면 더 창의력을 발휘해야 합니다.내가 방법을 알려준다면 파이썬 개발자도 그 기능 세트를 무효로 할 것이기 때문에, 당신은 스스로 할 수 있습니다.
참조: https://docs.python.org/2/library/user.html
해 주세요.~/.pythonrc.py
class secretclass:
def secretmessage(cls, myarg):
return myarg + " is if.. up in the sky, the sky"
secretmessage = classmethod( secretmessage )
def skycake(cls):
return "cookie and sky pie people can't go up and "
skycake = classmethod( skycake )
다음 코드를 main.py에 입력해 주세요(어디서나 가능).
import user
msg = "The only way skycake tates good"
msg = user.secretclass.secretmessage(msg)
msg += user.secretclass.skycake()
print(msg + " have the sky pie! SKYCAKE!")
실행해 보세요.이것들을 얻을 수 있을 겁니다.
$ python main.py
The only way skycake tates good is if.. up in the sky,
the skycookie and sky pie people can't go up and have the sky pie!
SKYCAKE!
, 에러가 난다, 에러가 나요.ModuleNotFoundError: No module named 'user'
, 사용하고 되어 .python3는 디세블로 되어 있습니다.
이 리스트에 대한 공적은 https://github.com/docwhat/homedir-examples/blob/master/python-commandline/.pythonrc.py로 보내드립니다.
예 7, 가장 견고한 예:bare import 명령을 사용하여 python에서 파일을 Import합니다.
- 를 만듭니다.
/home/el/foo5/
- 를 만듭니다.
/home/el/foo5/herp
named named 음 named named named named named .
__init__.py
진진: :el@apollo:/home/el/foo5/herp$ touch __init__.py el@apollo:/home/el/foo5/herp$ ls __init__.py
새 디렉토리 /home/el/foo5/herp/derp를 만듭니다.
아래에 다른 derp를 .
__init__.py
삭제:el@apollo:/home/el/foo5/herp/derp$ touch __init__.py el@apollo:/home/el/foo5/herp/derp$ ls __init__.py
에서 /home/el/el/foo5/herp/derp라는 새 .
yolo.py
기에에넣넣넣넣넣def skycake(): print "SkyCake evolves to stay just beyond the cognitive reach of " + "the bulk of men. SKYCAKE!!"
,
/home/el/foo5/main.py
을 넣습니다 , 기에이이;;;;;;;;;;;;;;from herp.derp.yolo import skycake skycake()
실행:
el@apollo:/home/el/foo5$ python main.py SkyCake evolves to stay just beyond the cognitive reach of the bulk of men. SKYCAKE!!
있는 ★★★★
__init__.py
file interpre python interpreter 、 Import file file file file 。
디렉토리에 모든 .py 파일을 포함하는 방법에 대한 제 게시물을 보려면 https://stackoverflow.com/a/20753073/445131를 참조하십시오.
importlib
모듈을 프로그래밍 방식으로 가져오기 위해 Python 3에 추가되었습니다.
import importlib
moduleName = input('Enter module name:')
importlib.import_module(moduleName)
는 .py에서 .moduleName
""를 package
상대적인 수입에 대한 인수.
python 2.x의 경우:
- ★★★★★★★★★★★★★★★★★.
import file
확장자를 .py - 로 표시할 수 이 경우 빈 를 추가할 수 있습니다.빈 폴더를 추가하려면
__init__.py
- .
__import__
이름없음)을합니다.
pmName = input('Enter module name:')
pm = __import__(pmName)
print(dir(pm))
「」라고 입력합니다.help(__import__)
세한것 、 을을해해요요 。
번째 ★★★★★★★★★★★★★★★★★★」
합니다.A.py
내B.py
두은 같은 2번으로 하다으로 하다.
.
├── A.py
└── B.py
'파일'에서 할 수 요.B.py
:
import A
또는
from A import *
또는
from A import THINGS_YOU_WANT_TO_IMPORT_IN_A
파일의 할 수 .A.py
내B.py
번째 ★★★★★★★★★★★★★★★★★★」
합니다.folder/A.py
내B.py
하다
.
├── B.py
└── folder
└── A.py
'파일'에서 할 수 요.B.py
:
import folder.A
또는
from folder.A import *
또는
from folder.A import THINGS_YOU_WANT_TO_IMPORT_IN_A
파일의 할 수 .A.py
내B.py
요약
- 첫 번째 경우, 파일
A.py
는 Import 입니다.B.py
구문을import module_name
. - 두 번째 경우에는
folder
「」을한 패키지입니다.A.py
구문을import package_name.module_name
.
패키지 및 모듈에 대한 자세한 내용은 이 링크를 참조하십시오.
알려진 이름의 '런타임'에 특정 Python 파일을 가져오려면:
import os
import sys
...
scriptpath = "../Test/"
# Add the directory containing your module to the Python path (wants absolute paths)
sys.path.append(os.path.abspath(scriptpath))
# Do the import
import MyModule
한 폴더에서 다른 폴더로 파이썬 파일을 가져오는 복잡한 방법은 많지 않습니다.__init_.py 파일을 생성하여 이 폴더가 python 패키지임을 선언한 후 호스트 파일로 이동하여 type만 가져오십시오.
from root.parent.folder.file import variable, class, whatever
문서 가져오기 .. -- 참조용 링크
__init__.py
파일은 Python이 디렉토리를 패키지를 포함하는 것으로 취급하도록 하기 위해 필요합니다.이것은 문자열과 같은 공통 이름을 가진 디렉토리가 모듈 검색 경로에서 나중에 발생하는 유효한 모듈을 의도하지 않게 숨기는 것을 방지하기 위해서입니다.
__init__.py
는 빈 파일일 하거나 ""를 도 있습니다.__all__
★★★★★★ 。
mydir/spam/__init__.py
mydir/spam/module.py
import spam.module
or
from spam import module
from file import function_name ######## Importing specific function
function_name() ######## Calling function
그리고.
import file ######## Importing whole package
file.function1_name() ######## Calling function
file.function2_name() ######## Calling function
다음은 제가 지금까지 이해한 두 가지 간단한 방법이며, 라이브러리로 Import하고자 하는 "file.py" 파일이 현재 디렉토리에만 있는지 확인합니다.
된 x.py
:
def greet():
print('Hello! How are you?')
함수를 Import 하는 파일에 다음과 같이 기록합니다.
from x import greet
이 기능은 파일 내의 모든 기능을 Import하지 않을 경우에 편리합니다.
.Import하는 은 .py Import를 입니다.__init__.py
은 .라는 이름의 빈 을 만드는 입니다.__init__.py
py 이 located.your.py 와 같은 .
Mike Grouchy에 의한 이 게시물은 의 훌륭한 설명입니다.__init__.py
python, Import, Import, Import, Python, Python.
곳에파일에서 할 때 에 '모듈/패키지'가 붙어야 .하다모듈/패키지 내에서는 파일에서 로드할 때 모듈/패키지 이름 앞에mymodule
해 보세요.상하하mymodule
다음과 같은 레이아웃이 됩니다.
/main.py
/mymodule
/__init__.py
/somefile.py
/otherstuff.py
드를 로드할 때somefile.py
////otherstuff.py
부에서__init__.py
내용물은 다음과 같다.내용은 다음과 같습니다.
from mymodule.somefile import somefunc
from mymodule.otherstuff import otherfunc
Python 3.5 이후를 사용하여 를 사용하여 직접 Import할 수 있습니다..py
경 할 요 필 이 듈 의 치 는 에 일 파 있 file location위 without to임 needing in as modify의변모없 an서로 a module arbitrary file sys.path
....
import importlib.util
import sys
def load_module(file_name, module_name)
spec = importlib.util.spec_from_file_location(module_name, file_name)
module = importlib.util.module_from_spec(spec)
sys.modules[module_name] = module
spec.loader.exec_module(module)
return module
그 thefile_name
매개 변수는 문자열 또는 경로 같은 개체여야 합니다.매개 변수는 문자열 또는 경로와 같은 개체여야 합니다.그 themodule_name
모든 로드 파이썬 모듈이 있어야 합니다(예: 든 로 python 모 함 다 포 트 져 하 니 라 loaded python) 야 필 all is parameter문을이 modulesys
, , ,importlib
, , or , 또는importlib.util
이 새로운 할 수 할 수 ). 단, 이 새로운 모듈에서 사용할 수 있는 이름을 선택할 수 있습니다.
이 기능은 다음과 같이 사용할 수 있습니다.
my_module = load_module("file.py", "mymod")
"Python " Import " 를 된 load_module()
수입하다
# file.py =
print(f"{__name__} imported (file.py)")
# =========
# one.py ==
print(f"{__name__} imported (one.py)")
load_module("file.py", "mymod")
import two
# =========
# two.py ==
print(f"{__name__} imported (two.py)")
import mymod
# =========
을 참조하면 다음 하여 이 명령어의 사용 방법을 할 수 .file.py
Import하다
$ python3 -m one
__main__ imported (one.py)
two imported (two.py)
mymod imported (file.py)
이 답변은 Python 공식 문서: 소스 파일을 직접 Import합니다.
import sys
#print(sys.path)
sys.path.append('../input/tokenization')
import tokenization
.py 파일을 가져오려면 위의 코드를 사용합니다.
먼저 경로를 추가한 후 가져오기
주의: '../input/displayization' 디렉토리에 tokenization.py 파일이 포함되어 있습니다.
Import 방법은 파일을 Import하고 파일 이름의 약어를 사용하는 것입니다.
import DoStuff.py as DS
DS.main()
Import 파일에는 확장자 .py가 붙어야 합니다.
python 스크립트를 abc.py 라고 하는 이름으로 포함시키는 방법에는 몇 가지가 있습니다.
- 예를 들어 파일 이름이 abc.py(import abc)인 경우 파일이 호출하는 python 스크립트와 동일한 위치에 있어야 한다는 제한이 있습니다.
abc를 Import하다
- 예를 들어 python 파일이 Windows 폴더 내에 있는지 확인합니다.Windows 폴더는 호출하는 python 스크립트가 있는 위치에 있습니다.
폴더에서 abc 가져오기
- abc.py 스크립트는 폴더 내에 있는 insider internal_folder를 사용할 수 있습니다.
폴더로부터.internal_folder Import abc
- 위의 James가 답한 바와 같이, 당신의 파일이 고정된 장소에 있는 경우
os Import Import
Import sysImport
스립 " = "...pytest/MyModule.py"
baspath(sys.path.sys(os.path.abspath(scriptpath))
모듈 Import
python 스크립트가 업데이트되고 업로드하지 않을 경우 다음 명령문을 사용하여 자동 새로 고칩니다.보너스 :)
%load_ext autoreload
%autoreload 2
Import할 모듈이 서브디렉토리에 없는 경우는, 다음의 조작을 실시해 주세요.app.py
「 」 「 」 、 「 」 、 「 」:
디렉토리 구조:
/path/to/common_dir/module/file.py
/path/to/common_dir/application/app.py
/path/to/common_dir/application/subpath/config.json
»app.py
sys
import os, sys, inspect
sys.path.append(os.getcwd())
from module.file import MyClass
instance = MyClass()
옵션(예를 들어 구성을 로드하는 경우) (사용 예에서는 검사가 가장 견고한 것 같습니다)
# Get dirname from inspect module
filename = inspect.getframeinfo(inspect.currentframe()).filename
dirname = os.path.dirname(os.path.abspath(filename))
MY_CONFIG = os.path.join(dirname, "subpath/config.json")
달려.
user@host:/path/to/common_dir$ python3 application/app.py
이 솔루션은 PyCharm뿐만 아니라 CLI에서도 사용할 수 있습니다.
이것은 python 파일에서 함수를 호출하는 방법이며, 어떤 함수든 호출할 수 있는 유연한 방법입니다.
import os, importlib, sys
def callfunc(myfile, myfunc, *args):
pathname, filename = os.path.split(myfile)
sys.path.append(os.path.abspath(pathname))
modname = os.path.splitext(filename)[0]
mymod = importlib.import_module(modname)
result = getattr(mymod, myfunc)(*args)
return result
result = callfunc("pathto/myfile.py", "myfunc", arg1, arg2)
다른 python 파일에 python 파일을 Import하기 위해서
도우미가 있다고 칩시다.py python 파일에는 다음과 같은 표시 기능이 있습니다.
def display():
print("I'm working sundar gsv")
이제 app.py에서 디스플레이 기능을 사용할 수 있습니다.
import helper
helper.display()
출력은
I'm working sundar gsv
메모: .py 확장자를 지정할 필요가 없습니다.
이상하게 들릴 수도 있지만, 가져오려는 파일에 대해 래퍼 스크립트를 작성하는 경우 심볼릭 링크를 만들 수 있습니다.
할 수 요.from filename import something
::from client import Client
, 이 경우에는 ..py .pyw .pyui
내선 번호
않은 중 는 Python을 Import하는 입니다.zip
삭제:
library.zip
|-library
|--__init__.py
일__init__.py
패키지에는 다음이 포함되어 있습니다.
def dummy():
print 'Testing things out...'
zip 아카이브에서 패키지를 Import할 수 있는 다른 스크립트를 작성할 수 있습니다.zip 파일을 sys.path에만 추가하면 됩니다.
import sys
sys.path.append(r'library.zip')
import library
def run():
library.dummy()
run()
이를 통해 Python 프로젝트를 Visual Studio Code로 구성할 수 있었습니다.
는 당신이 때 할 수 .__init__.py
를 참조해 주세요. 디렉토리가 'Directory'가 됩니다.implicit namespace package
다음은 Python Import와 프로젝트 구조에 대한 좋은 요약입니다.
또한 메인 패키지 내에 없는 스크립트와 함께 상단 바의 Visual Studio Code 실행 버튼을 사용하려면 실제 디렉토리에서 콘솔을 실행해 보십시오.
를 들어, 있는 '열린', '열린', '열린', '열린', '열린', '열린', '열린', '열린', '열린', '열린', '열린', '열린', '열린', '열린', '열린', 'test_game_item.py
가 Visual Studio Code로 .omission
패키지) (메인 패키지) 디렉토리:
├── omission
│ ├── app.py
│ ├── common
│ │ ├── classproperty.py
│ │ ├── constants.py
│ │ ├── game_enums.py
│ │ └── __init__.py
│ ├── game
│ │ ├── content_loader.py
│ │ ├── game_item.py
│ │ ├── game_round.py
│ │ ├── __init__.py
│ │ └── timer.py
│ ├── __init__.py
│ ├── __main__.py
│ ├── resources
│ └── tests
│ ├── __init__.py
│ ├── test_game_item.py
│ ├── test_game_round_settings.py
│ ├── test_scoreboard.py
│ ├── test_settings.py
│ ├── test_test.py
│ └── test_timer.py
├── pylintrc
├── README.md
└── .gitignore
디렉토리 구조는 [2]의 것입니다.
다음과 같이 설정할 수 있습니다.
(Windows) + + → 기본 설정: Open Settings(JSON)를 선택합니다.
사용자 설정에 다음 행을 추가합니다.
"python.terminal.executeInFileDir": true
다른 시스템에 대해서도 보다 포괄적인 답은 이 질문에 있습니다.
위와 같이 여러 가지 방법이 있습니다만, 파일의 내용을 Import 하고 싶을 뿐, 행이나 행의 기입이나 다른 모듈의 Import는 하고 싶지 않습니다.그래서 도트 구문을 사용해도 파일의 내용을 얻을 수 있는 방법을 생각해 냈습니다.file.property
Import(수입) 마지(Marge)
제가, 우,, 여 which which which which which which which which which which which which which which which which which which which which which which which which which 。data.py
testString= "A string literal to import and test with"
주의: 다음 명령어를 사용할 수 있습니다..txt
대신 내선번호를 입력해 주세요.
»mainfile.py
저,,,내내내열열다다다다다다다
#!usr/bin/env python3
Data=open('data.txt','r+').read()
로 되어 만, 「」에 액세스 .data.testString
data
의 인스턴스입니다.str
이 성질을 , 그것은 성질을 가지고 있다.testString
을 사용법
그런 다음 클래스를 만듭니다.를 들어 intended), " " " ( " " " ) 。ImportedFile
class ImportedFile:
그리고 이것을 (적절한 움푹 패임과 함께) 여기에 넣습니다.
exec(data)
마지막으로합니다.data
다음과 같이 합니다.
data=ImportedFile()
로 just ! module ,,처럼 like른 like른 、 른른,,,,, just, 。print(data.testString)
됩니다.A string literal to import and test with
,, 음에 하는 것을 경우from mod import *
「인스턴스 할당」을 .exec
.
이것이 도움이 되기를 바랍니다.
- ★★★
from y import *
- 파일 x와 y가 있다고 칩시다.
- y 파일을 x로 Import하려고 합니다.
그런 다음 x 파일로 이동하여 위의 명령을 실행합니다.이것을 테스트하려면 y파일에 인쇄기능을 넣고 Import가 성공하면 x파일에 인쇄해야 합니다.
언급URL : https://stackoverflow.com/questions/2349991/how-do-i-import-other-python-files
'IT' 카테고리의 다른 글
코드 실행 속도: ASP.NET-MVC 대 PHP (0) | 2022.11.08 |
---|---|
jooq TIMESTAMP(6) 지원 (0) | 2022.11.08 |
동일한 조건이 sql의 레코드에 나타날 때까지 행 값을 가져옵니다. (0) | 2022.11.07 |
메서드 호출에서 범용 인수를 명시적으로 지정하기 위한 Java-syntax (0) | 2022.11.07 |
데이터베이스 테이블에는 프라이머리 키가 없을 수 있습니까? (0) | 2022.11.07 |