使用本地目录pypackages中的包运行python__
pythonloc的Python项目详细描述
pythonloc:从本地目录导入包的python替换
pythonloc是 因此,不是运行python,而是运行pythonloc,并首先自动搜索pypackages路径。而不是运行pip 这是使用虚拟环境的替代方法。 这是一个python实现,它是pep 582的"python本地包目录"。pythonloc的目标是在讨论将此功能添加到cpython本身时,创建一个可访问的工具。如果愿意,您可以使用这些更改来构建自己的cpython,而不是使用pythonloc。
请注意,PEP 582未被接受。从长远来看,它可能被接受,也可能不被接受。 在python bytes播客的第117集的 "chad一直在packaging/pip空间中工作并编写一些令人兴奋的python工具和文章。" -< HeRF="HTTPS://twITT.COM/WebLogy/Stofs/109255645612505856"Re="NofLoLo>"Jeff Triplett "我对pypackages如何帮助简化和简化python依赖项工作流非常感兴趣。很好地实现了早期的原型,供人们测试!" -Florimond Manca,Bocadillo项目的创建者
使用 或 您将有四个可用的cli工具:pythonloc,piploc,pipx,以及pipfreeloc。
"python local"的缩写,它是python的一个替代品,有一个重要的区别:local目录添加到 所以不要运行 您将运行 如果采用pep 582,python本身就会有这种行为。 "pip local"的缩写,它使用与 如果pypackagese>目录不存在,将创建它。 所有参数都被转发到 所以不要运行 您将运行 如果采用pep 582,我认为 注意:pipx仅随pythonloc for python 3.6+提供。 将所谓的"入口点"安装到 所以不要运行 您将运行 如果找不到,pipx将从临时目录安装并运行它。如果您要求在 如果找不到二进制文件,将显示错误。 注意:在将新包安装到现有的 如果采用pep 582, 运行 它相当于 不使用 所以不要运行 您将运行 如果采用PEP 582,则应创建一个更健壮的解决方案来冻结pypackages的状态。 这就像在pip中一样。您只需要一个 PIP无法读取poetry.lock文件,因此必须生成requirements.txt文件。 可能有一个 pip还不能读取pipfile,只有pipenv可以读取。因此,您需要使用pipenv生成requirements.txt。 从长远来看,工具可以直接安装到pypackages中,或者piploc可以读取各种锁文件格式。 您可以使用pythonloc运行任何python命令,它只需在引擎盖下运行python即可: 另一个显示导入工作方式的示例: 虽然这项激励计划相当令人兴奋,但有些事情是无法解决的。 它非常简单,只需输入不到100行代码。它使用python和pip中已经内置的功能。 它所做的只是在调用python和pip时提供了一点间接性。它在运行python时修改了 如果您查阅 pythonpath是一个":"分隔的目录列表,前缀为默认模块搜索路径。结果是sys.path。 pythonloc是 要将软件包安装到 其中 如果您正在安装软件包,它将插入参数
安装的软件包就在那里。这包括它们的源代码,例如下面的 如果您想修改或调试已安装软件包的源代码,那么这样做非常容易。只需在 会起作用的。 如果您发现错误 不在…卸载包,外部环境… 然后运行 获取此行为的一个简单方法是在本地目录中创建符号链接 然后用 否则,您必须使用github上的参考实现来构建cpython。
与安装pip包相比,构建和分发自定义cpython构建需要更多的开销。 如果你有兴趣的话,我们鼓励你去看看,这很酷! 如果它被接受并添加到cpython中,那么就不再需要pythonloc了。python
和pip
的替代品,它自动识别一个\pypackages\uu
目录,并倾向于导入在此位置安装的包,而不是用户或全局站点包。如果您熟悉node,pypackages>的工作原理与
node>模块类似。
pythonloc
是实验性的,它的api将来可能会改变。推荐信
系统要求
安装:盒子里有什么?
pip install --user pythonloc
python3 -m pip install --user pythonloc
蟒蛇科
sys.path
的前面。<;version>;
是python版本,类似于3.7
。所有参数都被转发到python
python ...
pythonloc ...
piploc
pythonloc
相同的sys.path
调用pip。如果安装程序包,则将目标安装目录修改为站点程序包
pip
pip ...
piploc ...
pip
应该默认在适当的\upypackages\uuu
目录下工作。如果需要,可以添加标志以安装到站点软件包。pipx
\pypackages\uu
会出现问题。入口点或"二进制文件"在$path上不再可用,因为它们将在虚拟环境或系统中安装。这些二进制文件非常流行和有用。二进制文件的例子有black
,pytest
,tox
,flake8
,mypy
,poetry
,以及pipenv
(实际上还有pythonloc
本身)。pipx
是python的二进制安装程序和运行程序,在运行时,它会在相应的\upypackages\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
位置搜索二进制文件并运行它。如果您熟悉javascript的npx
,它与此类似。BINARY [BINARY ARGS]
pipx run BINARY [BINARY ARGS]
\u pypackages\uu
目录中找到二进制文件,则可以运行pipx run --pypackages BINARY [BINARY ARGS]
\pypackages\uu
目录时,将不会在../3.6/lib/bin
中创建入口点,例如,如果已经存在某个入口点。为此,您需要运行piploc install-u包。执行此操作时,将替换目录的全部内容。要解决这个问题,需要修改
pip
本身。pipx
将是运行二进制文件的一个很好的辅助工具。管道冻结位置
pip freeze
会出现一个问题,因为它显示了所有已安装的python包:那些位于site packages
和.pypackages>中的包。您可能只想输出安装到pypackages的包,而这正是pipfreeloc的作用。
pip freeze
,但只输出pipfreeloc
处理任何参数
0
pip install --user pythonloc
1
pip install --user pythonloc
从Requirements.txt/lockFiles安装
requirements.txt
文件来安装。从
requirements.txt安装
2
pip install --user pythonloc
从
poetry.lock安装
3
pip install --user pythonloc
export
命令指向poetry
但它还没有到达。参见https://github.com/sdispater/poetry/pull/675从pipfile.lock安装
4
pip install --user pythonloc
脚本
5
pip install --user pythonloc
6
pip install --user pythonloc
CLI
7
pip install --user pythonloc
8
pip install --user pythonloc
入口点/二进制文件
9
pip install --user pythonloc
缺点?
站点包中查找。这并不是完全密封的,可能会导致对使用哪些包的一些混淆。我希望默认的搜索路径是仅
node_modules
进行了比较,但我不认为它适用于这里。一方面,如果没有更多的内容安装到虚拟环境中,也是一样的,所以这只是将其移动到本地目录中。没有额外的膨胀。事实上,它更明显,可以删除,因为它没有隐藏在虚拟env目录中。但更重要的是,我认为它膨胀或将被滥用的假设源于javascript的生态系统。javascript有一个众所周知的有限的标准库,开发人员需要更频繁地接触第三方包。此外,javascript社区严重依赖许多插件和transpilation。python没有。我觉得这个臃肿的论点没有说服力。-u
标志时,带有--target
的pip install
将清除lib/bin
目录中的内容,但当未传递时,不会将任何内容放在那里。 FAQ
这与虚拟环境有何不同?
中查找包,然后在
中查找包,然后在其他位置(如用户或站点包)中查找包。
pythonloc
不需要激活或停用pythonloc
只查找名为\upypackages\uu
的本地目录。另一方面,虚拟环境激活会修改您的路径
,这样无论您在哪个目录中,都可以访问虚拟环境包。它是如何工作的?
pythonpath
环境变量,使其包含python--help的输出,您将看到以下内容:
pythonpath=.:\uuupypackages\<;version>;/lib的别名:$pythonpath pythonnargs
0
python3 -m pip install --user pythonloc
pipargs
是传递给它的任何参数,例如piploc install requests
在pypackages中实际输入了什么?
requests
目录。存储有关包的元数据d在*.dist info
目录中。\u pypackages\uu
中打开相应的文件并编辑!
1
python3 -m pip install --user pythonloc
如何从
\u pypackages>中卸载程序包?
piploc
将自动将pypackages添加到$pythonpath
,因此
2
python3 -m pip install --user pythonloc
deactivate
以确保您没有使用虚拟环境,然后重试。我能让python来代替调用pythonloc吗?
3
python3 -m pip install --user pythonloc
4
python3 -m pip install --user pythonloc
为什么不使用pep 582的参考实现呢?
推荐PyPI第三方库