我想创建一个简单的python项目,并且nixos文档是helpul。
with import <nixpkgs> {};
(
python3.withPackages (ps: [ps.ipython ps.flask ps.pytest])
).env然后我在项目文件夹上运行nix-shell,一切看起来都很好。
我遇到的问题是,我想添加pytest-bdd,但是它似乎不是为NixOS打包的,因为nix搜索pytest-bdd不返回任何结果。
因此,我尝试使用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发布于 2019-11-01 18:12:49
解决方案
因此,在浏览了大量的文档之后,我成功地获得了一个工作解决方案,我希望与大家分享这个解决方案,以避免人们遭受与我相同的痛苦。
这是我的shell.nix文件:
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";
};
buildInputs = [ python37.pkgs.glob2 python37.pkgs.parse python37.pkgs.six
python37.pkgs.py python37.pkgs.parse-type python37.pkgs.Mako python37.pkgs.pytest ];
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 my_pytestbdd])
).env运行nix-shell成功地创建了环境。
发布于 2019-11-02 20:53:26
如果您很高兴只使用requirements.txt文件,您可以使用虚拟主机弯曲nix以正常的方式工作,请参见下面的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上
https://stackoverflow.com/questions/58660421
复制相似问题