如何使包对计算机可见
How to make a package be visible for a computer
我真的很想在 python 中创建一个包。为此,我观看并阅读了几个教程,但总有一些东西不想工作。
我在做什么
我创建了一个文件夹 package__tutorial
,其中有另一个文件夹对应于我的包的名称 - mypackage
。
文件夹 mypackage
包含两个文件:
__init__.py
- 指示包所在位置的文件
functions.py
- 包含要包含到包中的函数的文件
在functions.py中有一些基本功能:
def average(x,y):
return (x+y)/2
总结一下——我的文件结构如下
package__tutorial
包含 mypackage
包含 __init__.py
和 functions.py
.
我尝试使用 import mypackage
加载我的包,然后使用 average(2,8)
,但我收到 name 'average' is not defined
的消息。似乎我的电脑看不到我新创建的包。我做了什么 wrong/something 遗漏了吗?
如果你使用 import mypackage
那么你需要用 mypackage.mymethod()
调用方法或者,如果你只想要 mypackage 中的 mymethod,请使用
from mypackage import mymethod
mymethod()
这只是您导入方式的问题。由于 average
是 functions.py
中的一个函数,您必须从 mypackage
包中导入 functions
模块。
from mypackage import functions
functions.average(2, 8)
如果只想调用 average
而不是 functions.average
,可以使用通配符导入。
from mypackage.functions import *
average(2, 8)
但是,请谨慎使用此方法,因为使用通配符导入导入具有相似命名函数的模块可能会出现问题。
我真的很想在 python 中创建一个包。为此,我观看并阅读了几个教程,但总有一些东西不想工作。
我在做什么
我创建了一个文件夹 package__tutorial
,其中有另一个文件夹对应于我的包的名称 - mypackage
。
文件夹 mypackage
包含两个文件:
__init__.py
- 指示包所在位置的文件functions.py
- 包含要包含到包中的函数的文件
在functions.py中有一些基本功能:
def average(x,y):
return (x+y)/2
总结一下——我的文件结构如下
package__tutorial
包含 mypackage
包含 __init__.py
和 functions.py
.
我尝试使用 import mypackage
加载我的包,然后使用 average(2,8)
,但我收到 name 'average' is not defined
的消息。似乎我的电脑看不到我新创建的包。我做了什么 wrong/something 遗漏了吗?
如果你使用 import mypackage
那么你需要用 mypackage.mymethod()
调用方法或者,如果你只想要 mypackage 中的 mymethod,请使用
from mypackage import mymethod
mymethod()
这只是您导入方式的问题。由于 average
是 functions.py
中的一个函数,您必须从 mypackage
包中导入 functions
模块。
from mypackage import functions
functions.average(2, 8)
如果只想调用 average
而不是 functions.average
,可以使用通配符导入。
from mypackage.functions import *
average(2, 8)
但是,请谨慎使用此方法,因为使用通配符导入导入具有相似命名函数的模块可能会出现问题。