我可以在setup.py项目配置文件中放些什么,以告诉开发人员该项目是私有/商业应用程序/库。
目前我设定:
setup(
name='MyProject',
version='0.1.0',
license='(c) My Company',
...
)
Run Code Online (Sandbox Code Playgroud)
有最佳做法吗?
注意:
如今,大多数项目都是开源的,并且遵循许可证模型。但是,当您从事该行业时,软件是私有的。我的公司与离岸公司合作,这些公司可能不知道软件可以是私有的。因此,我想通过在setup.py文件中指定它来引起他们的注意。这就是为什么我在寻找最佳实践的原因。
结论/解决方案
对于私人/专有应用程序,我将遵循rth的建议:
LICENSE文件。模板将是这样的:
setup(
name='MyProject',
version='0.1.0',
license="Proprietary",
classifiers=[
'License :: Other/Proprietary License',
...
],
...
)
Run Code Online (Sandbox Code Playgroud)
一种替代方法是设置“非开源”,如cookiecutter-pypackage模板中定义的那样。
我正在开发Python应用程序,并且正在分支发行版本。我已经在公司服务器上设置了PyPI服务器,并且已经将软件包的源代码分发复制到了该服务器上。
我检查了软件包是否托管在服务器上,然后尝试将其安装在本地开发计算机上。我最终得到以下输出:
$ pip3 install --trusted-host 172.16.1.92 -i http://172.16.1.92:5001/simple/ <my-package>
Collecting <my-package>
Downloading http://172.16.1.92:5001/packages/<my-package>-0.2.0.zip
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "C:\Users\<me>\AppData\Local\Temp\pip-build-ubb3jkpr\<my-package>\setup.py", line 9, in <module>
import appdirs
ModuleNotFoundError: No module named 'appdirs'
----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in C:\Users\<me>\AppData\Local\Temp\pip-build-ubb3jkpr\<my-package>\
Run Code Online (Sandbox Code Playgroud)
其原因是,我试图导入第三方库appdirs在我setup.py,这是我有必要计算data_files参数setup():
try:
from setuptools import setup
except ImportError:
from distutils.core import setup
import os
from …Run Code Online (Sandbox Code Playgroud) 我需要有关如何在python包中组织源代码的帮助-我已经在网络上关注了一些教程(尤其是本教程),但该方法并没有按照说明以及我的想象进行。
我想创建一个名为的python包binaryio。它应该提供两个类命名BinaryReader和BinaryWriter我希望用户能够与进口
from binaryio import BinaryReader
from binaryio import BinaryWriter
Run Code Online (Sandbox Code Playgroud)
因此,我创建了我的存储库和包目录结构,如下所示:
BinaryReader类)BinaryWriter类)setuptools.setup调用)如您所见,这些类位于我习惯的单独文件中(来自C#背景)。由于模块是Python中的“单元”,我不确定这是否是一个好主意-但对我来说,将所有类限制在一个大文件中似乎并不合逻辑。
__init__.py看起来如下导入这些类,从而(据我所知)from binaryio import BinaryReader以后可以为用户提供导入:
from binaryreader import BinaryReader
from binarywriter import BinaryWriter
Run Code Online (Sandbox Code Playgroud)
但是,当我在本地安装该软件包(似乎工作正常)并尝试到时import binaryio,出现以下错误:
>>> import binaryio
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "D:\Projects\Git\binaryio\binaryio\__init__.py", …Run Code Online (Sandbox Code Playgroud) 我有一个看起来像这样的源树:
\n\n/app/backend/module.py\n/app/cli/module.py\n/app/common/module.py\nRun Code Online (Sandbox Code Playgroud)\n\n现在我想构建三个包, ,app-backend,app-cli并且app-common其中应该是可分发的并且可以单独使用。\n我\xe2\x80\x99d 喜欢将代码保存在一个存储库中,因为我\xe2\x80\x99d 喜欢将所有内容放在一起,而且\xe2\x80\x99d 还没有那么多代码。
使用 setuptools 执行此操作的最标准且面向未来的方法是什么(或者是否有更合适的方法)?我不是为 Python 2.7 等构建的,如果它只适用于最新的工具,我会很好。
\n我有一个项目要结构如下:
myproject
__init__.py
api
__init__.py
api.py
backend
__init__.py
backend.py
models
__init__.py
some_model.py
Run Code Online (Sandbox Code Playgroud)
现在,我想同时在api.py和backend.py中导入some_model.py模块。如何正确执行此操作?我试过了
from models import some_model
Run Code Online (Sandbox Code Playgroud)
但是失败并显示为“ ModuleNotFoundError:没有名为'models'的模块”。我也试过
from ..models import some_model
Run Code Online (Sandbox Code Playgroud)
然后给我“ ValueError:尝试相对顶级包进行相对导入”。我在这里做错了什么?如何从其他目录(不是子目录)导入文件?
我正在制作一个包,这个包中的模块在if __name__=='__main__':块中包含用于测试目的的代码。但是我尝试在这些模块中使用相对导入会导致错误。
我已经阅读了这个帖子和其他十亿人: 第 10 亿次的相对进口
在将其标记为重复之前,如果我想做的事情在 Python3 中是不可能的,那么我的问题是为什么它可以在 Python2 中工作,以及是什么促使决定在 Python3 中如此麻烦?
这是我的示例 Python 项目:
mypackage
- module1.py
- module2.py
- __init__.py
Run Code Online (Sandbox Code Playgroud)
__init__.py并且module2.py是空的
module1.py 包含:
import module2
# module1 contents
if __name__=="__main__":
# Some test cases for the contents of this module
pass
Run Code Online (Sandbox Code Playgroud)
这在 Python2 中工作正常。我可以从我计算机上任何位置的其他项目导入 module1,我也可以直接运行 module1 并if运行块中的代码。
但是,这种结构在 Python3 中不起作用。如果我尝试在其他地方导入模块,它会失败:
>>> from mypackage import module1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\_MyFiles\Programming\Python Modules\mypackage\module1.py", line …Run Code Online (Sandbox Code Playgroud) python relative-path python-import python-3.x python-packaging
人们可以将 Python 作为源发行版(.tar.gz格式)或构建发行版(轮子格式)来共享。
据我了解,构建发行版的要点是:
然而,bdist 文件的这两个参数似乎不适用于纯 python 包。尽管如此,我发现natsort既有 sdist 又有 bdist。以 bdist 格式共享纯 python 包有什么好处吗?
我正在构建一个 python 包,并且正在使用 Spacy 库和 Spacy 模型 en_core_web_md。无法使用 pip 安装。你可以这样安装
python -m spacy download en_core_web_md
Run Code Online (Sandbox Code Playgroud)
我已将 en_core_web_md 文件夹放入我的 Python 包中。
简单的EDA
测试
安装程序.py
自述文件.md
执照
我可以成功安装包,但是当我导入时,它给了我这个错误。
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/shahid/anaconda3/envs/eda_test_6/lib/python3.5/site-packages/simple_nlp/__init__.py", line 1, in <module>
from simple_nlp.simple_nlp import SimpleNLP
File "/home/shahid/anaconda3/envs/eda_test_6/lib/python3.5/site-packages/simple_nlp/simple_nlp.py", line 22, in <module>
nlp = spacy.load("en_core_web_md")
File "/home/shahid/anaconda3/envs/eda_test_6/lib/python3.5/site-packages/spacy/__init__.py", line 30, in load
return util.load_model(name, **overrides)
File "/home/shahid/anaconda3/envs/eda_test_6/lib/python3.5/site-packages/spacy/util.py", line 175, in load_model
raise IOError(Errors.E050.format(name=name))
OSError: [E050] Can't find …Run Code Online (Sandbox Code Playgroud) 我用诗歌创建了一个轮文件。我正在运行 Spark-submit 命令,但它不起作用。我想我错过了一些东西
spark-submit --py-files /path/to/wheel
Run Code Online (Sandbox Code Playgroud)
请注意,我也参考了下面的内容,但由于我是 Python 新手,因此没有获得太多详细信息。 如何将 python 包传递给 Spark 作业并使用参数从包中调用主文件
用于为包注册表打包 Python 项目的 GitLab 说明指示用户创建包含以下内容的 pyproject.toml 文件:
[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"
[project]
name = "mypypipackage"
version = "0.0.1"
authors = [
{ name="Example Author", email="author@example.com" },
]
description = "A small example package"
requires-python = ">=3.7"
classifiers = [
"Programming Language :: Python :: 3",
"Operating System :: OS Independent",
]
[tool.setuptools.packages]
find = {}
Run Code Online (Sandbox Code Playgroud)
find = {}谁能解释一下底部的功能是什么?GitLab 指南没有解释,我似乎找不到任何相关文档。
当然,.toml 文件按照指示工作得很好,但在不[tool.setuptools.packages]完全包含该部分的情况下它似乎也工作得很好。
python ×10
python-packaging ×10
python-3.x ×3
pypi ×2
python-wheel ×2
setuptools ×2
apache-spark ×1
pip ×1
pyspark ×1
setup.py ×1
spacy ×1