【发布时间】:2020-07-10 17:19:28
【问题描述】:
我已经在网上搜索了很长一段时间,但我似乎无法弄清楚如何为我的最终用户分发我的 python 脚本。
我一直在我的命令行上使用我的脚本使用这个命令python samplemodule.py "args1"
这也是我希望我的用户在他们的命令行中使用它的方式。但我担心的是,某些模块依赖于其他库或模块。
当我的脚本都在项目的根目录中时,它们可以工作,但是当我尝试将它们打包并将它们放在子目录中时,一切都崩溃了。
这方面的一个例子是我现在无法运行我的脚本,因为当我从 data 子目录导入模块时出现错误。
这是我的项目结构。
MyProject
\formatter
__init__.py
__main__.py
formatter.py
addfilename.py
addscrapertype.py
...\data
__init__.py
helper.py
csv_formatter.py
setup.py
csv_formatter.py 文件只是调用 formatter.main 的包装器。
更新:我现在能够生成一个 tar.gz 包,但该包在安装到我的机器上时无法调用。
这是 setup.py:
import setuptools
with open("README.md", "r") as fh:
long_description = fh.read()
setuptools.setup(
name="formatter",
version="1.0.1",
author="My Name",
author_email="sample@email.com",
description="A package for cleaning and reformatting csv data",
long_description=long_description,
long_description_content_type="text/markdown",
url="https://github.com/RhaEL012/Python-Scripts",
packages=["formatter"],
include_package_data=True,
package_data={
# If any package contains *.txt or *.rst files, include them:
"": ["*.csv", "*.rst", "*.txt"],
},
entry_points={
"console_scripts": [
"formatter=formatter.formatter:main"
]
},
classifiers=[
"Programming Language :: Python :: 3",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
],
python_requires='>=3.6',
install_requires=[
"pandas"
]
)
现在,在机器上安装软件包后,我无法调用该模块并导致错误:
Z:\>addfilename "C:\Users\Username\Desktop\Python Scripts\"
更新:我尝试在虚拟环境中安装 setup.py 只是为了查看错误来自何处。
我安装它然后我收到以下错误:FileNotFoundError: [Errno 2] no such file or directory: 'README.md'
我尝试将README.md 包含在MANIFEST.in 中,但仍然没有运气。
所以我试着把它变成一个字符串,看看安装是否会继续。
安装继续进行,但我又遇到了一个错误,提示 package directory 'formatter' does not exist
【问题讨论】:
-
您可以通过向环境变量 PYTHONPATH 添加正确的路径来解决此问题。 Python 将在此路径列表中查找导入的包,因此请确保其中存在正确的包。
-
嗨@brunodesthuilliers,我已经按照教程进行了操作,但似乎没有得到我想要的结果。我创建了一个 tar.gz。文件,但一旦我将它安装在我的机器上。它无法识别包上的模块。
-
@BLitE.exe 好吧,我恐怕帮不上什么忙,特别是在 Windows 上 - 但至少你发布了你所做的,希望更有知识的人可以加入 ;-)跨度>
-
有机会在线查看该项目,或者至少查看
__init__和__main__的内容吗?很高兴在安装后看到您当前最终的结构(最简单的方法是至少部分共享源代码,以便我可以自己在本地构建它)。
标签: python python-3.x package pyinstaller