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

本文详细介绍了在Python项目中如何导入自定义模块或外部文件。包括在同一目录下导入、通过创建包的方式导入不同目录下的文件、调整环境变量或使用.pth文件进行导入的方法。

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

转自:http://hi.baidu.com/41202197514/item/91f745e8077808384cdcaff7

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


项目中想使用以前的代码,或者什么样的需求致使你需要导入外部的包

如果是web 下,比如说django ,那么你新建一个app,把你需要导入的说用东东,都写到这个app中,然后在setting中的app也配上基本就ok了

如果是本地代码,可以有几种方式,

1、这种最简单,也可能最不实用,将你的外部文件放到跟需要调用外部文件的文件同一个包下,同一目录

 folder
------toinvoke.py
------tobeinvoded.py

这样在toinvoke.py 中引入 

import toveinvoked 或 from tobeinvoked import *
即可
2、你的其他文件不是单个文件,或者不能如上所说放到同一目录下,而是在不同目录中,子目录
 folder
------tobeinvodedA.py
------tobeinvodedB.py
------tobeinvodedC.py
toinvoke.py
这种情况,现在folder 下新建一个__init__.py 的空文件,此时的folder不再是一个普通的文件夹,而是一个包 package,现在像这样
 folder #文件夹 现在的性质为一个python包package
------__init__.py
------tobeinvoded.py
------tobeinvodedA.py
------tobeinvodedB.py
------tobeinvodedC.py
toinvoke.py

这样在toinvoke.py 中引入 

import folder.toveinvoked 或 from folder.tobeinvoked import *
即可
3、同理,如果是如下的情况,folderB中的模块要调用folderA中的模块,方法同上,有什么改变,你已经知道了

 folderA
------tobeinvoded.py
------tobeinvodedA.py
------tobeinvodedB.py
------tobeinvodedC.py

 folderB
--------toinvoke.py

这样在toinvoke.py 中引入 

import folder.toveinvoked 或 from folder.tobeinvoked import *
即可
4、将要被调用的代码拷贝到$PYTHONHOME$\Lib\site-packages 下面,这个就跟Eclipse插件安装差不多

5、在$PYTHONHOME$\Lib\site-packages 下面新建一个.pth文件,比如说是MyPackage.pth,里面的内容是你的包的绝对路径比如:E:/PythonPrj
那么,在E:/PythonPrj下的所有包都可以按照包所在的相对路径引入,这个跟Eclipse插件安装的link 方式差不多
6、跟上面的差不多,也可以加个环境变量,这个就不多说了

总结、看看Python的包搜索路径
Python会在以下路径中搜索它想要寻找的模块:
1. 程序所在的文件夹
2. 标准库的安装路径
3. 操作系统环境变量PYTHONPATH所包含的路径

我们刚刚做的都是在这三条的基础上搞得。
### 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]。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值