python引入导入自定义模块和外部文件

本文详细介绍了在Python中如何导入不同位置的模块,包括同一目录下的模块、不同目录下的模块、通过环境变量导入模块等多种方式,并提供了具体的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考:http://blog.youkuaiyun.com/devil_2009/article/details/15816237


1、【最简单】将外部文件与需要调用的外部文件放在同一目录下

import  模块名
from  模块名  import *
2、假如被调用的不是单个文件,或者不能放在同一目录下,而是在不同的目录中,子目录

方法:在folder下新建一个__init__.py空文件,此时folder变成一个包package

import folder.模块名
from folder.模块名 import *



3、将被调用的模块拷贝到 $PYTHONHOME$\Lib\site-packages下

4、在$PYTHONHOME$\Lib\site-packages新建一个.pth文件,例如MyPackage.pth,内容是包的绝对路径,例如E:/PythonPrj,那么在E:/PythonPrj下的所有包都可以按照包所在的相对路径引入


5、添加到环境变量

Python会在以下路径中搜索模块:

程序所在文件夹

标准库的安装路径

系统环境变量PYTHONPATH所包含的路径


import sys
sys.path.append('c:\xx\test.py')
但是,以上的代码可能有时候会找不到模块或者包,因为sys模块使用C语言编写的,字符串支持 \n \r \t等来表示特殊字符

所以,上面的代码最好写成:

sys.path.append('c:\\xxx\\test.py')
sys.path.append('c:/xxx/test.py')
避免出现转义字符,导致路径无效。

但是在退出python后,自己添加的路径就消失无效了。










### Python导入使用自定义方法的方式 #### 1. 创建自定义模块Python 中,任何 `.py` 文件都可以作为一个模块。为了创建一个自定义模块,只需编写一个普通的 Python 文件,并将其保存为 `.py` 扩展名。例如,创建一个名为 `my_module.py` 的文件[^1]。 ```python # my_module.py def greet(name="World"): """打印问候消息""" return f"Hello, {name}!" class MyClass: """演示类的简单用法""" def __init__(self, value): self.value = value def print_value(self): print(f"The value is: {self.value}") ``` --- #### 2. 导入自定义模块中的方法 ##### (1) **直接导入整个模块** 通过 `import 模块名` 可以将整个模块导入到当前环境中。之后可以通过 `模块名.函数名()` 或 `模块名.类名()` 访问其内容。 ```python import my_module result = my_module.greet("Python") # 调用模块中的函数 print(result) obj = my_module.MyClass(42) # 使用模块中的类 obj.print_value() ``` 这种方式适合于需要访问模块中多个功能的情况[^1]。 --- ##### (2) **从模块导入特定方法或类** 如果只关心某些特定的功能,可以使用 `from ... import ...` 将这些功能单独导入。 ```python from my_module import greet, MyClass message = greet("Custom Module") # 直接调用函数 print(message) instance = MyClass(100) # 直接实例化类 instance.print_value() ``` 这样做的优点是可以省去每次都写模块名的麻烦,使代码更加简洁[^3]。 --- ##### (3) **为模块或方法指定别名** 当模块名较长或者容易引起命名冲突时,可以为其指定一个简短的别名。 ```python import my_module as mm greeting = mm.greet("Alias Example") print(greeting) ``` 同样地,也可以为单个方法或类设置别名: ```python from my_module import greet as say_hello response = say_hello("Renamed Function") print(response) ``` 这有助于提高代码的可读性灵活性[^5]。 --- #### 3. 组织成包结构 对于较大的项目,通常会将多个模块组织在一个目录下形成一个包。要实现这一点,需遵循以下步骤: - 创建一个包含所需模块文件夹(如 `mypackage`)。 - 在该文件夹内放置一个空的 `__init__.py` 文件,表明这是一个合法的 Python 包[^3]。 - 将各个模块放入此文件夹中。 例如,假设有一个名为 `utils.py` `data_handler.py` 的模块位于 `mypackage` 下面,则可通过如下方式进行访问: ```python # utils.py def calculate_sum(a, b): return a + b # data_handler.py def load_data(): return {"key": "value"} ``` 随后可以在其他地方按需加载这些子模块: ```python from mypackage.utils import calculate_sum from mypackage.data_handler import load_data total = calculate_sum(10, 20) print(total) dataset = load_data() print(dataset) ``` --- #### 4. 添加模块路径 默认情况下,Python 解释器会在标准库路径以及当前工作目录寻找模块。如果希望引入不在上述范围内的外部模块,可以手动修改 `sys.path` 列表或将模块移动至适当的位置[^2]。 示例:动态扩展查找路径 ```python import sys sys.path.append('C:\\path\\to\\custom_modules') import custom_module custom_module.some_function() ``` --- #### 总结说明 综上所述,在 Python导入使用自定义方法主要涉及两种基本形式——即直接引用整个模块或是选取其中的部分成分加以利用;与此同时还可以借助包的概念进一步优化项目的管理架构层次感更强也更易于维护升级迭代等操作流程顺畅自然[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值