㈠ python中怎么import自己写的模块
只需要在文件中import与你写的文件的文件名一致的模块名即可,这时Python会为你创建一个pyc文件的。
即,如果你已经写了一个名为ssss.py的文件,而现在你需要在名为aaaa.py的文件中使用ssss.py中定义的方法,那么你只需要在aaaa.py中加入import ssss,然后你就可以在aaaa.py中使用ssss.py中的方法(当然方法前需要加模块名来引用)。你还可以在aaaa.py中如下写
from ssss import ....
....可替换为ssss.py中定义的方法的名称
或
from ssss import *
导入ssss.py中的所用定义,使用以上这两种方法导入ssss.py中的定义,你在aaaa.py中可不用使用模块名来引用。
㈡ python导入模块的“最佳实践”是什么
通常,不要使用from molename import *。这样做会使导入器的命名空间变得混乱,并且使得连接器更难以检测未定义的名称。
在文件的顶部导入模块。这样做可以清楚地了解代码所需的其他模块,并避免了模块名称是否在范围内的问题。每行导入一个模块可以轻松添加和删除导入的模块,但每行导入多个模块会占用更少的屏幕空间。
如果按以下顺序导入模块,这是一种很好的做法:
1.标准库模块 -- 例如:sys,os,getopt,re
2.第三方库模块(安装在Python的site-packages目录中的任何内容) -- 例如mx.DateTime,ZODB,PIL.Image等
3.本地开发的模块
有时需要将模块导入语句移动到函数或类里面,以避免循环导入问题。Gordon McMillan 说:
当两个模块都使用 "import <mole>" 的导入形式时,循环导入就可以了。但是当第 2 个模块想从第 1 个模块中获取一个名称 ("from mole import name") 并且导入位于顶层时,就会出错。 这是因为第 1 个模块中的名称还不可用,因为第 1 个模块正在忙着导入第 2 个模块。
在这种情况下,如果第二个模块仅用于一个函数,则可以轻松地将模块导入语句移动到该函数中。调用导入时,第一个模块将完成初始化,第二个模块可以进行导入。
如果某些模块是特定于平台的,则可能还需要将模块导入语句移出顶级代码。在这种情况下,甚至可能无法导入文件顶部的所有模块。在这种情况下,在相应的特定于平台的代码中导入正确的模块是一个很好的选择。
只有当需要解决诸如避免循环导入或试图减少模块初始化时间的问题时,才可以将导入移动到本地范围,例如在函数定义中。如果根据程序的执行方式,许多导入是不必要的,这种技术尤其有用。如果仅在某个函数中使用模块,您还可能希望将导入移到该函数中。请注意,第一次加载模块可能会因为模块的一次初始化而代价高昂,但多次加载模块实际上是免费的,只需进行几次字典查找。即使模块名称超出了作用域,模块也可能在 sys.moles 中可用。
㈢ python 导入全部模块
通常的办法是,你将所有的模块都放到系统的lib目录里。或者是放到sys的path变量里。 然后就可以import了。
你可以设置一个容器。在容器里,将所有需要的模块都import完成。如果不知道哪些模块,可以使用OS的WALK来遍历。
把你的用户代码跑在容器里。这样就不需要import所有的模块了。 容器可以是自己写的一个解释器,比如象是ipython这样子。也可以是一个WEB界面, 或者是一个服务,一个可以调用插件的运行模块。
容器也可以是一个代码框架。
㈣ 请问为什么python3.7.3import导入模块不成功
1、主要你是要当前使用的环境中是否已经安装了对应的模块。
2、检查当前使用的环境是否为虚拟环境的,如果为虚拟环境,则之前在python路径下安装的模块应该是不能使用的,所有还需要重新在虚拟环境中安装对应的模块。
3、在你展现的程序中呈现的是语法错误,然而并非是模块导入错误,所以好好检查你的程序出错的地方。
㈤ python怎么导入同一包的模块
一、何为模块
1.一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀。
2.模块目的和函数,对象等一样,是为了代码的复用性而存在的。即一个py程序写了很多功能,也可以被其他py程序调用。被调用后被作为模块,此时会产生一个pyc的文件即为这个模块的缓存文件,相当于编译了模块文件使该py模块被调用的速度变快。一个大的项目一个人肯定是不行的,所以模块也为程序员相互间的合作提供了便利。
二、模块妙用
1.import
只需要在py程序开头加上import 文件名(不能有.py后缀)。例如,模块的文件名是span.py,那么只需在自己的py程序加import span。
2. import可以在程序的任意位置调用,但一次调用后会驻留内存,下次再调用会直接调用内存中的模块(python的优化)。
3.个模块都是一个独立的名称空间,定义在这个模块中的函数,把这个模块的名称空间当做全局名称空间,这样我们在编写自己的模块时,就不用担心我们定义在自己模块中全局变量会在被导入时,与使用者的全局变量冲突。
print('from the spam.py')
money=1000def read1(): print('spam->read1->money',1000)def read2(): print('spam->read2 calling read')
read1()def change(): global money
money=0
支持tab自动补全
㈥ python怎么从别处导入模块
肯定不能直接 import
一,最好放在统一的地方,目录最好在python.exe的目录下,因为python默认是搜索改目录下的文件或者文件夹
二、尽量采用from ~~ import ~~方式,不要直接用import方式,具体原因楼主可以自己网络下原因,理解更深刻
三、当逻辑文件放的比较深的时候,需要__init__.py文件
四、如果文件不在python安装目录下,需要手动指定文件文件目录,具体原因楼主可以自己网络下原因,理解更深刻
㈦ python 类和继承,包及模块导入 求解答
一 .mole
通常模块为一个文件,直接使用import来导入就好了。可以作为mole的文件类型有".py"、".pyo"、".pyc"、".pyd"、".so"、".dll"。
二. package
通常包总是一个目录,可以使用import导入包,或者from + import来导入包中的部分模块。包目录下为首的一个文件便是 __init__.py。然后是一些模块文件和子目录,假如子目录中也有 __init__.py 那么它就是这个包的子包了。
一.模块你可以使用import语句将一个源代码文件作为模块导入.例如:
[python]view plain
#file:spam.py
a=37#一个变量
deffoo:#一个函数
print"I'mfoo"
classbar:#一个类
defgrok(self):
print"I'mbar.grok"
b=bar()#创建一个实例
使用import spam 语句就可以将这个文件作为模块导入。系统在导入模块时,要做以下三件事:
[python]view plain
importspam#导入并运行模块spam
printspam.a#访问模块spam的属性
spam.foo()
c=spam.bar()
用逗号分割模块名称就可以同时导入多个模块:
[python]view plain
importsocket,os,regex
[python]view plain
importosassystem
importsocketasnet,threadasthreads
system.chdir("..")
net.gethostname()
[python]view plain
fromsocketimportgethostname#将gethostname放如当前名字空间
printgethostname()#直接调用
socket.gethostname()#引发异常NameError:socket
from语句支持逗号分割的对象,也可以使用星号(*)代表模块中除下划线开头的所有对象:
[python]view plain
fromsocketimportgethostname,socket
fromsocketimport*#载入所有对象到当前名字空间
[python]view plain
#mole:foo.py
__all__=['bar','spam']#定义使用`*`可以导入的对象
另外, as 也可以和 from 联合使用:
[python]view plain
h=hostname()
import 语句可以在程序的任何位置使用,你可以在程序中多次导入同一个模块,但模块中的代码*仅仅*在该模块被首次导入时执行。后面的import语句只是简单的创建一个到模块名字空间的引用而已。sys.moles字典中保存着所有被导入模块的模块名到模块对象的映射。这个字典用来决定是否需要使用import语句来导入一个模块的最新拷贝.
[python]view plain
#检查是单独执行还是被导入
if__name__=='__main__':
#Yes
statements
else:
#No(可能被作为模块导入)
statements
㈧ Python导入模块问题
因为import pygal并不会递归导入pygal下的子模块。
import pygal这行语句实际上做的是:执行pygal目录下的__init__.py文件。
㈨ 如何导入python中的模块
定义模块,只要使用文本编辑器,把一些python代码输入到文本中,然后以.py为后缀名进行保存,任何此类文件都会被认为是python模块。
比如说,下面的代码输入到一个文件中,就可以看作是一个模块:
def printme(var): print varif __name__ == '__main__': printme(1)
假设说输入到a.py中,那么import a就可以把这个模块导入。
然后可执行a.printme(3),屏幕即可打印出3:
>>> a.printme(3)3>>>
一个模块顶层定义的变量,会自动变成模块的属性。例如:
data=[1,2,3]def printme(var): print varif __name__ == '__main__': printme(1)
data变量就是模块的一个属性。其实printme也是一个属性,只不过是一个函数罢了。
引入模块示例如下:(假定此时data=[1,2,3]未定义)
>>> import a>>> a.data Traceback (most recent call last): File "<pyshell#1>", line 1, in <mole> a.dataAttributeError: 'mole' object has no attribute 'data'>>> reload(a)<mole 'a' from 'C:/py\a.pyc'>>>> a.data Traceback (most recent call last): File "<pyshell#3>", line 1, in <mole> a.dataAttributeError: 'mole' object has no attribute 'data'>>>
从上述提示可以看出data属性未定义,此时再在a.py文件中定义data=[1,2,3],重新加载a模块,并输出data属性:
>>> reload(a)<mole 'a' from 'C:/py\a.py'>>>> a.data[1, 2, 3]>>>
这里的reload函数可以重新加载一个模块。如果在模块代码中更改了,那么需要重新加载。
上面a.data,就是访问模块中的属性。
上面的例子是导入一个文件作为一个模块。
其实python的模块导入还有更丰富的内容。
除了模块名之外,python也可以导入指定目录路径。python代码的目录就称为包。因此,这类导入就称为包导入。事实上,包导入是把计算机上的目录变成python的一个命名空间。而属性就是目录中包含的子目录或者是模块文件。
看下面例子:
在我的桌面上有一个aa文件夹,里面有bb文件夹,bb里面有a.py这个文件。
那么在aa和bb文件夹中分别放置一个__init__.py,之后,在命令行中import aa.bb.a,就可以导入模块a了。
㈩ 在python中导入模块中的对象有哪几种方式
1、导入整个模块:
一般格式为:
import
模块1[模块2[,...]]
模块名就是程序文件的前缀,不含.py,可一次导入多个模块,导入模块后,调用模块中的函数或类时,需要以模块名为前缀,这样代码读起来更容易理解.
例:
>>>import
math
>>>math.sin(0.5)
0.4794255
2、与form联用导入整个模块:
一般格式为:
form
模块名
import*
这种方式导入模块后,调用模块中的函数或类,仅使用函数名或类名,代码简洁,但可读性差,不容易理解
例:
>>>form
math
import*
>>>cos(0.5)
0.8775825
3、与form联用导入一个或多个对象:
一般格式为:
form
模块名
import
对象1[,对象2[,对象...]]
这种方式只导入模块中的一个或多个对象,调用模块中的对象时,仅使用对象名(#与方法二类似)
例:
>>>form
math
import
sin,cos,exp
>>>sin(0.5)
0.4794255
>>>cos(0.5)
0.8775825
>>>exp(1)
2.7182818
(10)python重新导入模块扩展阅读
Python中常用模块
math:模块定义了标准的数学方法,如sin、cos
random:模块提供了各种方法来产生随机数
datetime:模块中有日期时间处理方法
time:模块中有时间、时钟、计时相关的方法
tkinter:模块提供了图形界面开发的方法
参考资料:python
-
import