importpython路径
❶ python import 路径问题 新手
以下为纯手打,下面给几个demos:
说明:
moles所在的目录在python里叫package, 下面是一个名为 IsDir的package(实际上就是一个目录), package下面有4个moles(A, B, C, D)和一个__init__.py文件,目录结构如下:
IsDir/
A.pyB.pyC.pyD.py__init__.py
大体来讲,有两种方法可以调用某目录下(包括递归目录)的moles.
一. __init__.py为空时
1.1以下为调用moleA的代码:
#!/usr/bin/envpython
fromIsDirimportA
A.say()
输出:
ThisismoleA!
1.2 如果想调用moleA,B,C,D呢?
方法1.
#!/usr/bin/envpython
fromIsDirimportA
fromIsDirimportB
fromIsDirimportC
fromIsDirimportD
A.say()
B.say()
C.say()
D.say()
方法2.
#!/usr/bin/envpython
importIsDir.A
importIsDir.B
importIsDir.C
importIsDir.D
fromIsDirimport*
A.say()
B.say()
C.say()
D.say()
错误示例1:
#!/usr/bin/envpython
importIsDir.A
A.say()
错误示例2:
#!/usr/bin/envpython
fromIsDirimport*
A.say()
错误的原因:
IsDir/目录下__init__.py为空时,直接importIsDir.A或者fromIsDirimport*是无效的.
从官方文档里可以看到,__init__.py 里没有__all__=[mole1,mole2,...]时,
fromIsDirimport* 只能保证IsDir被imported, 所以此时IsDir里的moles是无法被imported,
此时只有如我上面所写的代码所示才能正确执行,否则是错误的。官方解释为:importIsDir.A并无任何意义,只有接着执行fromIsDirimport*后,importIsDir.A语句里的moleA才会被定义,所以完整的调用因改为: 1. import IsDir.A 2. from IsDir import *。
二. __init__.py用all=[...]指定该package下可以被imported进去的mole
__init__.py里写入如下内容:
%catIsDir/__init__.py
__all__=["A","B"]
然后使用之:
#!/usr/bin/envpython
fromIsDirimport*
A.say()
B.say()
结果:
%pythontest.py
ThisismoleA!
ThisismoleB!
错误实例:
#!/usr/bin/envpython
fromIsDirimport*
C.say()
以上示例之所以错误,是因为C并没有在__all__=["A","B"]里制定,由此可见,packageIsDir下面的__init__.py里,__all__=[...]具有隔离moles的作用。
补充:
mole A, B, C,D里我分别只定义了一个method, 例如,以下为mole A的code:
%catIsDir/A.py
defsay():
print"ThisismoleA!"
后记:
谢谢这位同学,回答你的问题感觉很有收获,顺便又把python温习了一遍。回头把这些总结贴到我的blog上以上为手写,望采纳,共勉。
=============================================================
老子写了这么多居然采用了另一个简陋的答案,mlgb的,枉我熬夜给你答题。这种白痴楼主就不配在这里问问题。
❷ 出现“python import路径”问题,该如何处理
1.python import模块时, 是在sys.path里按顺序查找的;
2.sys.path是一个列表,里面以字符串的形式存储了许多路径;
3.当你增加里新的放模块的目录时,可以from sys import path path.append(r" 路径 ")。
❸ 在Python 中如何使用 import 来调用其他模块模块放置的路径是...
Python 会自动从 sys.path 路径列表里的所有路径里寻找你要 import 的模块,这个路径列表可以通过在终端输入以下命令查看:
import sys
sys.path
如果你要调用其他路径的文件,可以先在上述列表中加入新的路径,以你提到的情况为例:
import sys
sys.path.insert(0, '/')
import test
一般情况下,一个项目的所有文件应该在同一个项目文件夹中。这时,有其他解决办法,比如在项目的下级目录里放置 __init__.py 文件,然后用 from 文件夹 import 文件名 的方式来引入模块。
这种方式使得文件结构更加清晰,便于管理和维护。例如,假设你有一个名为 myproject 的项目,其中包含一个名为 mymole 的文件夹,该文件夹里有多个 Python 文件,你可以这样导入文件:
from mymole import filename
这种方式不仅简化了导入过程,还能让你更容易地了解项目的结构和模块之间的关系。实际上,使用这种方式可以让你的代码更具模块化,有利于团队协作和代码重用。
当然,如果你需要频繁地在不同的项目路径中导入模块,维护 sys.path 列表可能会变得繁琐。这时,你可以考虑使用虚拟环境来管理你的项目依赖,或者在项目的根目录下创建一个 setup.py 文件,通过这个文件来管理项目的安装和导入路径。
总的来说,合理地管理模块路径和导入方式,可以大大提高 Python 项目的开发效率和代码质量。希望这些信息对你有所帮助。
我是新手,如果有更好的建议或更正的地方,请高手们指教。
❹ python获取当前路径的方法python获取目录下文件路径
import os,glob
cur_path=os.getcwd()+"\input\*.*"##当前路径或文件
output_path=os.getcwd()+"\output"##输出路径
print(cur_path)
for filename in glob.glob(cur_path): ##显示文件包括路径
r,name =os.path.split(filename) ##将完整文件,包括路径进行分割
print(filename)
print(r)
print(name)