这个 "minimalistic" python 包的问题在源代码中有一个导入
Problem with this "minimalistic" python packaging that has an import in source code
我不是程序员,我的audience/users也不是程序员。所以我正在尝试为我的 python 包进行最简约的设置。我喜欢下面的这个结构,在这个 video:
中得到认可
python-mypackage/
└── src/
└── mypackage.py
文件mypackage.py:
import numpy as np
class myclass():
def __init__(self, var_a, var_b):
self.var_a = var_a
self.var_b = var_b
def mult(self):
return np.matmul(self.var_a, self.var_b)
当我使用 python setup.py bdist_wheel
构建它时,使用 setup.py:
from setuptools import setup
setup(
name='mypackage',
version='0.0.1',
description='Test package',
py_modules=["mypackage"],
package_dir={'': 'src'},
)
并使用带有 pip install -e .
的 pip 安装它,我得到一个 NameError: name 'np' is not defined if I 运行
from mypackage import myclass
test = myclass([1,2], [3,4])
#Returns, NameError: name 'np' is not defined
但是由于我不明白的原因,如果我有 mypackage.py:
import numpy as np
def mult(var_a, var_b):
return np.matmul(var_a, var_b)
然后我构建它并 pip 安装它,下面的代码有效:
from mypackage import mult
mult([1,2], [3,4])
#Returns 11
这种行为是否正确?或者我的装置中有什么奇怪的东西吗?如果正常,我该如何纠正 class 情况下 numpy 的导入失败(我知道如果我从 mypackage 导入 * 会起作用,但我宁愿做 from mypackage 导入 myclass) ?
我确信 __init__.py
和 __main__.py
文件可能有最佳编程实践,但我宁愿远离它们,因为我认为它们使文件夹组织有点难以遵循非程序员。但是,如果没有 __init__.py
and/or __main__.py
文件就无法绕过它,那也很好知道。
我的印象是这是某种安装错误。当我创建一个新环境并重新安装所有内容时,我可以使用 from mypackage import myclass
调用 myclass
而不会出错
我不是程序员,我的audience/users也不是程序员。所以我正在尝试为我的 python 包进行最简约的设置。我喜欢下面的这个结构,在这个 video:
中得到认可python-mypackage/
└── src/
└── mypackage.py
文件mypackage.py:
import numpy as np
class myclass():
def __init__(self, var_a, var_b):
self.var_a = var_a
self.var_b = var_b
def mult(self):
return np.matmul(self.var_a, self.var_b)
当我使用 python setup.py bdist_wheel
构建它时,使用 setup.py:
from setuptools import setup
setup(
name='mypackage',
version='0.0.1',
description='Test package',
py_modules=["mypackage"],
package_dir={'': 'src'},
)
并使用带有 pip install -e .
的 pip 安装它,我得到一个 NameError: name 'np' is not defined if I 运行
from mypackage import myclass
test = myclass([1,2], [3,4])
#Returns, NameError: name 'np' is not defined
但是由于我不明白的原因,如果我有 mypackage.py:
import numpy as np
def mult(var_a, var_b):
return np.matmul(var_a, var_b)
然后我构建它并 pip 安装它,下面的代码有效:
from mypackage import mult
mult([1,2], [3,4])
#Returns 11
这种行为是否正确?或者我的装置中有什么奇怪的东西吗?如果正常,我该如何纠正 class 情况下 numpy 的导入失败(我知道如果我从 mypackage 导入 * 会起作用,但我宁愿做 from mypackage 导入 myclass) ?
我确信 __init__.py
和 __main__.py
文件可能有最佳编程实践,但我宁愿远离它们,因为我认为它们使文件夹组织有点难以遵循非程序员。但是,如果没有 __init__.py
and/or __main__.py
文件就无法绕过它,那也很好知道。
我的印象是这是某种安装错误。当我创建一个新环境并重新安装所有内容时,我可以使用 from mypackage import myclass
myclass
而不会出错