我发现composer.json & composer.lock(php) hasconflict 部分(不要与合并冲突混淆)。其他类似的文件,如package.json/yarn.json(nodejs) 或Pipfile(python) 以及相应的锁定文件package-lock.json/yarn.lock或Pipfile.lock,不具有这种格式,即使所有这些锁定文件都具有相同的目的(将依赖项锁定到确切的版本)并以类似的方式实现(至少从表面上看)
那么它的用途是什么以及我应该用它做什么?我阅读了作曲家文档https://getcomposer.org/doc/04-schema.md#conflict但我仍然感到困惑,例如
与此包的此版本冲突的包的映射。它们将不允许与您的软件包一起安装。
例如运行后composer install我有一个composer.lock说
{
"name": "symfony/http-kernel",
"version": "v4.4.20",
...
"conflict": {
"symfony/browser-kit": "<4.3",
"symfony/config": "<3.4",
"symfony/console": ">=5",
"symfony/dependency-injection": "<4.3",
"symfony/translation": "<4.2",
"twig/twig": "<1.43|<2.13,>=2"
},
...
Run Code Online (Sandbox Code Playgroud)
很容易猜测“symfony/console”5.0 与“symfony/http-kernel”4.4.20 冲突,因此symfony/console 5.0不会安装。
我需要对冲突采取什么措施吗?到目前为止,我觉得作为软件包用户(而不是软件包开发人员),这些信息只是仅供参考,我不需要做任何事情。但那为什么还要费心为我列出它们呢?毕竟package.json和Pipefile没有这样的信息,没有它我就找不到问题。
- - 更新 - -
从我得到的答案中,我意识到我需要强调这一点:我理解composer.lock是针对composer的,所以我不需要担心它。
我不明白将其放入composer.json的目的,该文件是供人类用户使用的。那么如果它有冲突部分我该怎么办呢?
我试图用来Pipenv指定一个特定的包,只安装在 Linux 或 Mac 上。根据pep496,我应该能够在需求文件中做这样的事情。
unicon; sys_platform == 'linux' or sys_platform == 'darwin'
Run Code Online (Sandbox Code Playgroud)
这就是等效Pipfile部分的样子。
[packages]
requests = "*"
unicon = {version = "*", sys_platform = "== 'linux' or == 'darwin'"}
Run Code Online (Sandbox Code Playgroud)
这将创建一个Pipfile.lock没有错误但也没有任何标记信息的信息。从 Windows 安装时,它应该只是跳过尝试安装,unicorn但它没有,并且没有适用于 Windows 的 unicorn 版本,所以我收到安装错误。
我意识到我可能可以让事情变得简单,只是做,sys_platform = "!= 'win32'"但我想明确平台。
有没有in ['linux', 'darwin']办法做到这一点?
我正在尝试使用 Pipenv 和 pytorch。
要在 Windows 中安装 pytorch,我必须将以下代码写入 Pipfile:
[packages]
torch = {file = "http://download.pytorch.org/whl/cpu/torch-0.4.1-cp37-cp37m-win_amd64.whl"}
Run Code Online (Sandbox Code Playgroud)
然而,linux 上的wheel 文件是不同的。
[packages]
torch = {file = "http://download.pytorch.org/whl/cpu/torch-0.4.1.post2-cp37-cp37m-linux_x86_64.whl "}
Run Code Online (Sandbox Code Playgroud)
如何在 Pipfile 中指定它们?
我创建了一个包,包含Pipfile,我想用 docker 进行测试。
我想用 pip 安装用 Pipfile 编写的包,而不创建 virutalenv。
# (do something to create some-file)
RUN pip install (some-file)
Run Code Online (Sandbox Code Playgroud)
怎么做?
编辑
我正在尝试导入包algosec.models内的文件algobot。
我试过添加--hidden-import algosec,我也试过在导入之前添加路径,使用sys.path.append(./../algosec)
这是我尝试运行程序时收到的错误消息:
Traceback (most recent call last):
File "algobot_packer/algobot.py", line 2, in <module>
File "PyInstaller/loader/pyimod03_importers.py", line 546, in exec_module
File "algobot/cli/cli.py", line 3, in <module>
File "PyInstaller/loader/pyimod03_importers.py", line 546, in exec_module
File "algobot/microsoft_teams/mainloop.py", line 9, in <module>
File "PyInstaller/loader/pyimod03_importers.py", line 546, in exec_module
File "algobot/framework/configuration.py", line 34, in <module>
File "PyInstaller/loader/pyimod03_importers.py", line 546, in exec_module
File "algobot/framework/commands.py", line 22, in <module>
File "PyInstaller/loader/pyimod03_importers.py", line 546, in exec_module
File "algobot/framework/bot.py", line …Run Code Online (Sandbox Code Playgroud) 如果您在一个同时使用这两者的项目中工作,setup.py并且Pipfile您经常在:Pipfile/[packages]和 中发现相同的值setup.py/install_requires。
有谁知道我怎么知道Pipfile使用setup.py/install_requiresfor 的值[packages]?
如何执行 Pipfile 中定义的脚本?
按照此处找到的语法,我在 pipfile 中定义了脚本部分,如下所示:
[scripts]
tests = "bash ./run-tests.sh"
Run Code Online (Sandbox Code Playgroud)
运行后$ pipenv install,如何调用tests脚本?
我尝试了以下但没有成功:
$ tests
$ pipenv tests
$ pipenv run tests
$ pipenv shell
(virtual env) $ tests
在pipenv中有没有一种方法可以在Pipfile中指定python的最低版本?
这样的事情行吗?
[requires]
python_version = ">=python 3.5"
Run Code Online (Sandbox Code Playgroud) 例如,我们有一些pipfile(如下),我想冻结Django版本。我们没有require.txt,只使用pipenv。如何冻结django版本?
[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"
[packages]
django = "*"
[dev-packages]
black = "*"
[requires]
python_version = "3.6"
Run Code Online (Sandbox Code Playgroud) 我们的项目具有以下高级目录结构*
./datascience/
??? core
? ??? setup.py
??? notebooks
? ??? Pipfile
??? web
??? Pipfile
Run Code Online (Sandbox Code Playgroud)
*为简洁起见,排除了所有不相关的文件和目录。
该core软件包是一个库。它是notebooks和web应用程序的依存关系。
该core程序包是一个库,其依赖项在setup.py
import setuptools
setuptools.setup(
install_requires=[
'some-dependency',
'another-dependency'
]
)
Run Code Online (Sandbox Code Playgroud)
在web和notebooks应用程序是使用pipenv依赖管理。它们的依赖关系在中指定Pipfile。
例如,这是在web中指定依赖项的方式web/Pipfile:
[packages]
datascience-core = {path = "./../core"}
flask = "~= 1.0"
Run Code Online (Sandbox Code Playgroud)
注意,core依赖关系是本地依赖关系,因此是相对路径。
做一个pipenv install从内部web或notebooks目录,不安装的依赖性core如我所料库!
我还尝试使用Pipfilefor …
pipfile ×10
python ×8
pipenv ×7
pip ×3
composer-php ×1
docker ×1
package.json ×1
php ×1
pyinstaller ×1
python-3.x ×1
pytorch ×1
setup.py ×1
yarnpkg ×1