如何导入其他Python文件?
如何导入Python中的其他文件如何导入其他Python文件?,python,python-import,python-module,python-packaging,Python,Python Import,Python Module,Python Packaging,如何导入Python中的其他文件 如何准确地导入特定的python文件,如import file.py 如何导入文件夹而不是特定文件 我希望在运行时基于用户动态加载Python文件 输入 我想知道如何从文件中只加载一个特定部分 例如,在main.py中,我有: from extra import * 虽然这为我提供了extra.py中的所有定义,但我可能只需要一个定义: def gap(): print print 要从extra.py获取gap,我应该向import语句添
import file.py
main.py
中,我有:
from extra import *
虽然这为我提供了extra.py
中的所有定义,但我可能只需要一个定义:
def gap():
print
print
要从extra.py
获取gap
,我应该向import
语句添加什么?已添加到Python3,以编程方式导入模块
导入导入库
moduleName=input('输入模块名称:')
importlib.import_模块(moduleName)
.py扩展名应从moduleName
中删除。该函数还为相对导入定义了一个package
参数
在python 2.x中:
- 只需导入文件,不带.py扩展名
- 通过添加一个空的
文件,可以将文件夹标记为包\uuuu init\uuuu.py
- 您可以使用
函数,该函数将模块名(不带扩展名)作为字符串扩展名\uuuuuuuuuuuuuuuuu导入
pmName=input('输入模块名称:')
pm=\uuuu导入(pmName)
印刷(主任(下午))
键入help(\uuuu import\uuuu)
了解更多详细信息。已添加到Python3中,以编程方式导入模块
导入导入库
moduleName=input('输入模块名称:')
importlib.import_模块(moduleName)
.py扩展名应从moduleName
中删除。该函数还为相对导入定义了一个package
参数
在python 2.x中:
- 只需导入文件,不带.py扩展名
- 通过添加一个空的
文件,可以将文件夹标记为包\uuuu init\uuuu.py
- 您可以使用
函数,该函数将模块名(不带扩展名)作为字符串扩展名\uuuuuuuuuuuuuuuuu导入
pmName=input('输入模块名称:')
pm=\uuuu导入(pmName)
印刷(主任(下午))
键入
help(\uuuu import\uuuu)
了解更多详细信息。将python文件从一个文件夹导入另一个文件夹的复杂方法不多。只需创建一个\uuuuu init\uuuuuu.py文件来声明此文件夹是一个python包,然后转到要导入的主机文件,只需键入
从root.parent.folder.file导入变量、类,无论什么
将python文件从一个文件夹导入到另一个文件夹,没有很多复杂的方法。只需创建一个\uuuuu init\uuuuuu.py文件来声明此文件夹是一个python包,然后转到要导入的主机文件,只需键入
从root.parent.folder.file导入变量、类,无论什么
要在“运行时”以已知名称导入特定Python文件:
import os
import sys
要在“运行时”以已知名称导入特定Python文件,请执行以下操作:
import os
import sys
有很多方法可以导入python文件,都有其优缺点。
不要草率地选择第一个适合您的导入策略,否则,当您发现代码库不能满足您的需求时,您将不得不重写代码库
我将首先解释最简单的示例1,然后再介绍最专业、最可靠的示例7
示例1,使用python解释器导入python模块:
def what_does_the_fox_say():
print("vixens cry")
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
>>>
您通过python解释器导入了fox,从fox.py中调用了python函数what\u does\u the\u fox\u say()
execfile
或()执行另一个python文件:
def moobar():
print("hi")
execfile("/home/el/foo2/mylib.py")
moobar()
el@apollo:/home/el/foo$ python main.py
hi
moobar函数是从mylib.py导入的,并在main.py中提供def question():
print "where are the nuclear wessels?"
from chekov import question
question()
el@apollo:/home/el/foo3$ python main.py
where are the nuclear wessels?
/main.py
/mymodule
/__init__.py
/somefile.py
/otherstuff.py
.
├── A.py
└── B.py
.
├── B.py
└── folder
└── A.py
如果您在chekov.py中定义了其他函数,则除非您import*
def watchout():
print "computers are transforming into a noose and a yoke for humans"
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
el@apollo:/home/el/foo5$ python main.py
SkyCake evolves to stay just beyond the cognitive reach of the bulk
of men. SKYCAKE!!
从其他目录导入外部文件中的所有内容os.system(“pythonyourfile.py”)
import os
os.system("python yourfile.py")
示例6,通过搭载python startuphook导入文件:
更新:这个例子曾经适用于python2和python2,但现在只适用于python2。python3摆脱了这个用户startuphook特性集,因为它被低技能的python库编写者滥用,在所有用户定义的程序之前,使用它不礼貌地将代码注入全局名称空间。如果你想让它在python3上发挥作用,你就必须更具创造性。如果我告诉你怎么做,python开发人员也会禁用该功能集,所以你只能靠自己了
见:
将此代码放入您的主目录~/.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 )
testString= "A string literal to import and test with"
将此代码放入main.py(可以在任何地方):
运行它,您应该得到以下结果:
$ 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:没有名为“user”的模块
,则表示您正在使用python3,默认情况下会禁用StartupHook
这项jist的功劳是:把你的船送上去
示例7,最健壮:使用bare Import命令导入python中的文件:
el@apollo:/home/el/foo5$ python main.py
SkyCake evolves to stay just beyond the cognitive reach of the bulk
of men. SKYCAKE!!
import DoStuff.py as DS
DS.main()
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
def display():
print("I'm working sundar gsv")
import helper
helper.display()
/main.py
/mymodule
/__init__.py
/somefile.py
/otherstuff.py
from mymodule.somefile import somefunc
from mymodule.otherstuff import otherfunc
testString= "A string literal to import and test with"
#!usr/bin/env python3
Data=open('data.txt','r+').read()
class ImportedFile:
exec(data)
data=ImportedFile()
/path/to/common_dir/module/file.py
/path/to/common_dir/application/app.py
/path/to/common_dir/application/subpath/config.json
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
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)
library.zip
|-library
|--__init__.py
def dummy():
print 'Testing things out...'
import sys
sys.path.append(r'library.zip')
import library
def run():
library.dummy()
run()
.
├── A.py
└── B.py
import A
from A import *
from A import THINGS_YOU_WANT_TO_IMPORT_IN_A
.
├── B.py
└── folder
└── A.py
import folder.A
from folder.A import *
from folder.A import THINGS_YOU_WANT_TO_IMPORT_IN_A
%load_ext autoreload
%autoreload 2
from y import *
$ python3 -m one
__main__ imported (one.py)
two imported (two.py)
mymod imported (file.py)