【发布时间】:2019-08-18 16:31:30
【问题描述】:
几天前,我创建了一个名为 pyblime 的小项目,现在我正试图弄清楚如何创建一个合适的 setup.py,它允许我将“正确的东西”上传到 PyPi,这样用户就可以能够通过使用pip 来享受项目,而无需做任何“太花哨”的事情,比如调用花哨的自定义开发脚本,现在项目树结构如下所示:
│ .gitignore
│ configure.py
│ MANIFEST.in
│ README.md
│ requirements.txt
│ setup.py
│
├───data
│ ├───commands
│ │ comment.py
│ │ fold.py
│ │
│ ├───screenshots
│ │ test_simple.png
│ │ test_themes.gif
│ │
│ ├───st_build_3149
│ │ ├───syntax
│ │ └───themes
│ └───testfiles
├───docs
│ build.md
│ contributing.md
│ guidelines.md
│ usage.md
│
├───examples
│ demo_00.py
│ tutorials.py
│ tutorial_00.py
│ tutorial_01.py
│ tutorial_02.py
│ tutorial_03.py
│ tutorial_04.py
│ tutorial_05.py
│ tutorial_06.py
│
├───pyblime
│ utils.py
│ view.py
│ __init__.py
│
├───sublime_text
│ sublime.py
│ sublime_plugin.py
│
└───tests
run_all.py
test_scopes.py
test_view.py
x.py
我有几个简单的疑问,而不是 1 个问题:
- 指示 setup.py 将
sublime_text/sublime.py和sublime_text/sublime_plugin.py文件复制到Lib/site-packages根目录的“标准”方式是什么? - 你是如何告诉 setup.py 将整个文件夹
pyblimeadhoc 复制到Lib/site-packages中的? - 最后,将测试/示例/测试/文档/数据上传到 PyPi 是否正确?这是使用 SDK/库本身不需要的内容...如果不是,您将在哪里包含此类数据...我知道存在 sdist&dist 文件夹的概念,我已经已经阅读了一些关于它here 但问题仍然存在:)
现在我的 setup.py 看起来像这样:
from pathlib import Path
from setuptools import setup
root_path = Path(__file__).parent
requirements = (root_path / "requirements.txt").read_text()
requirements = [
v for v in requirements.split("\n")
if v.strip() and not v.strip().startswith("#")
]
readme = (root_path / "README.md").read_text()
setup(
author="mcve",
author_email="mcve",
classifiers=["mcve"],
description="mcve",
install_requires=requirements,
keywords=["mcve"],
long_description=(root_path / "README.md").read_text(),
name="mcve",
# package_data = {}, <---- How do i use this?
# packages = [], <---- Do I need to use this?
url="mcve",
version="0.0.1",
)
附言。是的...我已经阅读了有关包装的官方文档...但是如果我了解这些文档,我就不会在 SO ;D 上问这个问题。提前致谢!
【问题讨论】:
标签: python packaging pypi pyblime