python - 尝试将 NixOS 未打包的 pytest-bdd 添加到 shell.nix 环境
问题描述
我想创建一个简单的 python 项目,nixos 文档很有帮助。所以我有一个包含以下内容的shell.nix文件:
with import <nixpkgs> {};
(
python3.withPackages (ps: [ps.ipython ps.flask ps.pytest])
).env
然后我在项目文件夹上运行nix-shell ,一切似乎都很好。
我遇到的问题是我想添加pytest-bdd但似乎没有为 NixOS 打包,因为nix search pytest-bdd不返回任何结果。
所以我尝试使用行为而不是pytest-bdd,因为它已经为 NixOS 打包,但不幸的是,行为二进制文件不可用,而ipython和烧瓶可用。并且行为 文档统计了一个二进制文件应该可用。
所以我决定为pytest-bdd尝试一种不同的方法,并按照https://nixos.org/nixpkgs/manual/#python上的示例 (15.17.1.2.1。打包库)。
with import <nixpkgs> {};
(
let
my_pytestbdd = python37.pkgs.buildPythonPackage rec {
pname = "pytest-bdd";
version = "3.2.1";
src = python37.pkgs.fetchPypi {
inherit pname version;
sha256 = "1ibyr40g3p6xbx1m59as3s9spyadz8wyc7zwqyzibphrw4pkvrqp";
};
doCheck = false;
meta = {
homepage = "https://github.com/pytest-dev/pytest-bdd/";
description = "BDD library for the py.test runner";
};
};
in python37.withPackages (ps: [ps.ipython ps.flask ps.pytest ps.glob2 my_pytestbdd])
).env
我被这个消息卡住了:
Processing ./pytest_bdd-3.2.1-py2.py3-none-any.whl
Collecting glob2 (from pytest-bdd==3.2.1)
ERROR: Could not find a version that satisfies the requirement glob2 (from pytest-bdd==3.2.1) (from versions: none)
ERROR: No matching distribution found for glob2 (from pytest-bdd==3.2.1)
builder for '/nix/store/d94madfidxgn5r0k9kivfidn4p2cvyjk-python3.7-pytest-bdd-3.2.1.drv' failed with exit code 1
cannot build derivation '/nix/store/ypc7hpylzvmxx8lmk5cfg8jfhrfalzgn-python3-3.7.5-env.drv': 1 dependencies couldn't be built
error: build of '/nix/store/ypc7hpylzvmxx8lmk5cfg8jfhrfalzgn-python3-3.7.5-env.drv' failed
解决方案
如果你很高兴只使用一个requirements.txt
文件,你可以弯曲 nix 以使用 virtualenv 以正常方式工作,请参阅下面的 default.nix:
with import <nixpkgs> {};
with pkgs.python37Packages;
stdenv.mkDerivation {
name = "impurePythonEnv1d";
buildInputs = [
taglib
openssl
git
libxml2
libzip
python37Full
python37Packages.virtualenv
stdenv
libffi
zlib ];
src = null;
shellHook = ''
unset http_proxy
export GIT_SSL_CAINFO=/etc/ssl/certs/ca-bundle.crt
SOURCE_DATE_EPOCH=$(date +%s)
virtualenv --no-setuptools venv
source venv/bin/activate
pip install jedi
pip install ipython==5.2.0
pip install pylint
pip install flake8
pip install -r requirements.txt
'';
}
requirements.txt
然后创建nix-shell
一个
推荐阅读
- python - Python字典键值进入Pyspark中的数据框where子句
- android - 无法通过 Sceneform ux ArFragment 读取 NFC 标签
- sql - 如何在一个表的列中选择另一个表中不可用的某些值
- c# - 抓取时如何处理分页
- mysql - 在MYSQL中的特定条件下查找最新日期的记录以及其他相应的值
- iis - 当 .Net 中有许多长时间运行的请求时,IIS 会减慢速度
- https - 与邮递员联系 QnA 制造商问题
- java - 如何使用 Dockerfile 和 python 设置 JAVA_HOME?
- jquery - jquery删除没有id的特定div
- java - 在Java中为二维数组赋值