我正在使用toml包来读取我的pyproject.toml文件。我想添加自定义数据,在本例中我将在docs/conf.py文件中读取这些数据。当我尝试添加自定义部分时,我从Vs Code 中的Even Better TOML扩展中收到错误和警告,指出不允许我的自定义数据。
示例 TOML 部分位于pyproject.toml
[custom.metadata]
docs_name = "GUI Automation for windows"
docs_author = "myname"
docs_copyright = "2023"
docs_url= "https://someurl.readthedocs.io/en/latest/"
Run Code Online (Sandbox Code Playgroud)
所以,我的问题是:是否有一种有效的方法将自定义数据添加到pyproject.toml文件中?
正在尝试卸载numpy. 我试过了pip uninstall numpy。它告诉我它没有安装。但是,numpy仍然安装在/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/numpy.
如何确保pip找到numpy包裹?
我有以下难题.我试图在父包级别公开包的子包中的一些模块.
文件夹结构基本上是这样的:
script.py
package/
__init__.py
module1.py
subpackage/
__init__.py
submodule1.py
submodule2.py
Run Code Online (Sandbox Code Playgroud)
在script.py我目前要编写的文件中
from package.subpackage.submodule1 import foo
Run Code Online (Sandbox Code Playgroud)
如果我想从导入一些submodule1.py文件,但我希望能够揭露文件submodule1.py并submodule2.py在封装级,让我所有的进口可以看起来像
from package.module1 import bar
from package.submodule1 import foo
from package.submodule2 import goo
Run Code Online (Sandbox Code Playgroud)
请注意,我不希望暴露bar,foo并goo在package水平,即不
from package import bar
from package import foo
Run Code Online (Sandbox Code Playgroud)
因为在我的情况下,模块之间的分离仍然很重要.
这甚至可能吗?__init__.py文件中有诀窍吗?
谢谢!
pip 是否能够递归搜索文件系统路径并安装包及其依赖项?例如,给定以下文件结构(文件未显示)pip install packageA -f C:\packages\不起作用。
C:\packages\
C:\packages\packageA\
C:\packages\packageA\1.0.0
C:\packages\packageA\1.0.1
C:\packages\packageB\
C:\packages\packageB\2.2.1
C:\packages\packageB\2.2.4
Run Code Online (Sandbox Code Playgroud)
此外,这些包可以是带有 setup.py 文件的纯源吗?或者它们是否需要是像wheel 或zip 文件这样的二进制文件。最后,有没有办法解决依赖关系?例如,如果 packageA 需要 packageB 的版本,pip 可以从我的文件夹中获取该版本的 packageB 吗?我是否需要 html 文件来指示事物的位置和内容?
我知道我可以将 pip 直接指向本地路径 ( pip install C:\packages\packageA\1.0.0),但我希望它能够像 PyPI 中提供包一样运行。例如,如果用户键入pip install packageB或 ,pip install requirements.txt并且该需求文件包含本地存在但 PyPI 中不存在的包,那么它就会起作用。(我可以在配置文件中设置本地包存储路径,这样 pip 命令就不需要 -f 参数)
基本上,我想使用没有网络服务器的文件系统来复制 PyPI 功能(安全性不允许我们运行一个)。任何见解将不胜感激。
是否有任何解析器可以读取 Pipfile 并返回 Pipfile 中使用的所有包的列表?
如果没有,该怎么办呢?我认为正则表达式可以完成这项工作,但我对 Pipfiles 的结构还不够熟悉,无法确认情况确实如此。
我有一个名为clana(Github,PyPI)的包,其结构如下:
.
??? clana
? ??? cli.py
? ??? config.yaml
? ??? __init__.py
? ??? utils.py
? ??? visualize_predictions.py
??? docs/
??? setup.cfg
??? setup.py
??? tests/
??? tox.ini
Run Code Online (Sandbox Code Playgroud)
setup.py 看起来像这样:
from setuptools import find_packages
from setuptools import setup
requires_tests = [...]
install_requires = [...]
config = {
"name": "clana",
"version": "0.3.6",
"author": "Martin Thoma",
"author_email": "info@martin-thoma.de",
"maintainer": "Martin Thoma",
"maintainer_email": "info@martin-thoma.de",
"packages": find_packages(),
"entry_points": {"console_scripts": ["clana=clana.cli:entry_point"]},
"install_requires": install_requires,
"tests_require": requires_tests,
"package_data": {"clana": ["clana/config.yaml"]}, …Run Code Online (Sandbox Code Playgroud) 我准备部署一个具有以下布局的 Python 包:
MyPackage/
setup.py
MyPackage/
__init__.py
__main__.py
lib/
__init__.py
utils.py
db/
__init__.py
db1.py
db2.py
tasks/
__init__.py
something.py
Run Code Online (Sandbox Code Playgroud)
其中setup.py包含:
setup(name = MyPackage,
...
packages = find_packages(),
include_package_data = True,
entry_points = {"console_scripts" : [
"do_something = MyPackage.__main__:main"
]})
Run Code Online (Sandbox Code Playgroud)
__main__.py包含:
import tasks.something as something
something.my_function()
Run Code Online (Sandbox Code Playgroud)
something模块包含:
import db.db1 as db1
import db.db2 as db2
def my_function():
db1.this_func(...)
db2.that_func(...)
Run Code Online (Sandbox Code Playgroud)
db1包含:
import sqlalchemy
import lib.utils as utils
def this_func(...):
sqlalchemy.create_engine(...)
Run Code Online (Sandbox Code Playgroud)
并db2包含:
import sqlalchemy
import lib.utils as …Run Code Online (Sandbox Code Playgroud) 我的开发人员希望能够将库发布为“测试版”或“发布版”。
IE:
1.2.3-beta
1.2.3
在消费项目中,他们无法给我任何关于何时想要使用beta或release包的具体标准。我们有 CI,但没有任何明确的“何时”,我无法支持两个单独的点馈送,因为它们可能会失败。因此,我建议利用需求文件中的版本范围语法,这样他们就可以在签入期间指定他们想要的内容。他们从来没有做过这样的事情,而我基本上是一个Python菜鸟。是否可以过滤预发布标签?IE
会lib == 1.*.*-*取beta包裹吗?
和
会lib == 1.*.*, !=1.*.*-*提取release包裹并确保排除任何beta包裹吗?
我会自己尝试我的理论,但我对 python 不太了解,无法在本地模拟某种示例库,而且他们太忙了,无法研究它。
我知道它pip freeze > requirements.txt存在,但它会打印出我的系统包,其中只有我的目录/项目需要的几个。
我没有使用 a virtualenv,所以我很确定我无法打印出这样的本地包。
我也知道pipdeptree存在,但我也不知道这如何解决我的问题?
我想从 git 存储库安装一个包,并使用 pipelinenv 指定提交 ID(我相信如果我使用 pip,它应该非常相似)
到目前为止我尝试过:
pipenv install "git+ssh://git@bitbucket.org/<username>/<repository>.git/<commit_id>#egg=mypackage"
将以下行附加到 Pipfile 并且没有错误
<package-name> = {git = "ssh://git@bitbucket.org/<username>/<repository>.git/<commit_id>"}
如果我导入该包,import mypackage它会检测到它,但缺少其依赖项。
mypackage的 setup.py看起来像;
import setuptools
with open("README.md", "r") as readme:
long_description = readme.read()
with open("./requirements.txt", "r") as fh:
requirements = fh.readlines()
setuptools.setup(
name='mypackage',
url='https://bitbucket.org/<username>/<repositroy>',
packages=setuptools.find_packages(),
install_requires=[req for req in requirements if req[0] not in ["#", "-"]],
Run Code Online (Sandbox Code Playgroud)
)
python-packaging ×10
python ×9
pip ×6
pipfile ×2
pypi ×2
python-2.7 ×2
python-3.x ×2
setuptools ×2
dependencies ×1
numpy ×1
pipenv ×1
python-wheel ×1
toml ×1