virtu | Hey! I'm wondering how to correctly set up a devShell using poetry2nix. Previously, I was using:
devShells.default = pkgs.mkShell {
packages = with pkgs; [ poetry ];
LD_LIBRARY_PATH = "${pkgs.stdenv.cc.cc.lib}/lib/";
};
together with
PYTHON_VERSION=$(python --version | awk '{print $2}' | cut -d. -f1-2 | tr -d '\n')
export PYTHONPATH=$PYTHONPATH:$(poetry env info --path)/lib/python${PYTHON_VERSION}/site-packages
in my .envrc, but I was hoping to get the same effect more gracefully using mkPoetryEnv, so I tried:
devShells.default = mkPoetryEnv {
projectDir = ./.;
};
but for some reason the dependencies aren't available:
» grep pandas pyproject.toml
pandas = "2.1.3"
» python -c "import pandas"
Traceback (most recent call last):
File "<string>", line 1, in <module>
ModuleNotFoundError: No module named 'pandas'
Any idea what I'm doing wrong?
| 18:02:10 |
Aleksandr Lebedev | Hey! Whats going on with ipympl? I've encountered a problem with the ipympl library.
First I added ipympl as a dependency:
poetry add ipympl
Using version ^0.9.4 for ipympl
Then, when I tried to enter the development environment with the command nix develop I received the following message:
nix develop
warning: Git tree '/home/user/test-jupyter' is dirty
error: builder for '/nix/store/yn9990741wv439qncd2wpl2pdbwkjzyz-python3.12-ipympl-0.9.4.drv' failed with exit code 2;
last 10 log lines:
> File "<frozen importlib._bootstrap>", line 1387, in _gcd_import
> File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
> File "<frozen importlib._bootstrap>", line 1310, in _find_and_load_unlocked
> File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
> File "<frozen importlib._bootstrap>", line 1387, in _gcd_import
> File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
> File "<frozen importlib._bootstrap>", line 1324, in _find_and_load_unlocked
> ModuleNotFoundError: No module named 'hatchling'
I tried to override ipympl:
myapp = mkPoetryApplication {
projectDir = self;
overrides = withDefaults (final: prev: {
ipympl = prev.ipympl.overridePythonAttrs (old: {
nativeBuildInputs = old.nativeBuildInputs or [ ] ++ [ final.hatchling ];
});
});
};
But it was unsuccessful:
nix develop
warning: Git tree '/home/user/test-jupyter' is dirty
error: builder for '/nix/store/3siq2h2ggxhs4cs2bqr4caczq4vcl15r-python3.12-ipympl-0.9.4.drv' failed with exit code 1;
last 10 log lines:
> full command: /nix/store/z7xxy35k7620hs6fn6la5fg2lgklv72l-python3-3.12.4/bin/python3.12 /nix/store/9gd8kj409msfv599456ywbyi97izlbr4-python3.12-pip-24.0/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py prepare_metadata_for_build_wheel /build/tmpwmmwvne3
> cwd: /build/ipympl-0.9.4
> Preparing metadata (pyproject.toml) ... error
> error: metadata-generation-failed
>
> × Encountered error while generating package metadata.
> ╰─> See above for output.
>
> note: This is an issue with the package mentioned above, not pip.
> hint: See above for details.
For full logs, run 'nix log /nix/store/3siq2h2ggxhs4cs2bqr4caczq4vcl15r-python3.12-ipympl-0.9.4.drv'.
error: 1 dependencies of derivation '/nix/store/26zp4sb66agpjwhw7y4pdr5rl9cwwgh1-nix-shell-env.drv' failed to build
| 06:10:32 |
Aleksandr Lebedev | In reply to @lebastr:matrix.org
Hey! Whats going on with ipympl? I've encountered a problem with the ipympl library.
First I added ipympl as a dependency:
poetry add ipympl
Using version ^0.9.4 for ipympl
Then, when I tried to enter the development environment with the command nix develop I received the following message:
nix develop
warning: Git tree '/home/user/test-jupyter' is dirty
error: builder for '/nix/store/yn9990741wv439qncd2wpl2pdbwkjzyz-python3.12-ipympl-0.9.4.drv' failed with exit code 2;
last 10 log lines:
> File "<frozen importlib._bootstrap>", line 1387, in _gcd_import
> File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
> File "<frozen importlib._bootstrap>", line 1310, in _find_and_load_unlocked
> File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
> File "<frozen importlib._bootstrap>", line 1387, in _gcd_import
> File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
> File "<frozen importlib._bootstrap>", line 1324, in _find_and_load_unlocked
> ModuleNotFoundError: No module named 'hatchling'
I tried to override ipympl:
myapp = mkPoetryApplication {
projectDir = self;
overrides = withDefaults (final: prev: {
ipympl = prev.ipympl.overridePythonAttrs (old: {
nativeBuildInputs = old.nativeBuildInputs or [ ] ++ [ final.hatchling ];
});
});
};
But it was unsuccessful:
nix develop
warning: Git tree '/home/user/test-jupyter' is dirty
error: builder for '/nix/store/3siq2h2ggxhs4cs2bqr4caczq4vcl15r-python3.12-ipympl-0.9.4.drv' failed with exit code 1;
last 10 log lines:
> full command: /nix/store/z7xxy35k7620hs6fn6la5fg2lgklv72l-python3-3.12.4/bin/python3.12 /nix/store/9gd8kj409msfv599456ywbyi97izlbr4-python3.12-pip-24.0/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py prepare_metadata_for_build_wheel /build/tmpwmmwvne3
> cwd: /build/ipympl-0.9.4
> Preparing metadata (pyproject.toml) ... error
> error: metadata-generation-failed
>
> × Encountered error while generating package metadata.
> ╰─> See above for output.
>
> note: This is an issue with the package mentioned above, not pip.
> hint: See above for details.
For full logs, run 'nix log /nix/store/3siq2h2ggxhs4cs2bqr4caczq4vcl15r-python3.12-ipympl-0.9.4.drv'.
error: 1 dependencies of derivation '/nix/store/26zp4sb66agpjwhw7y4pdr5rl9cwwgh1-nix-shell-env.drv' failed to build
It's really weird!
I ended up with this config:
myapp = mkPoetryApplication {
projectDir = self;
overrides = withDefaults (final: prev: {
ipympl = prev.ipympl.overridePythonAttrs (old: {
nativeBuildInputs = old.nativeBuildInputs or [ ] ++ [
final.hatchling
final.hatch-jupyter-builder
final.jupyterlab
pkgs.nodejs
];
});
});
};
And I've got a crazy error message:
Internal Error: EACCES: permission denied, mkdir '/homeless-shelter'
Error: EACCES: permission denied, mkdir '/homeless-shelter'
WARNING: The directory '/homeless-shelter/.cache/pip' or its parent directory is not owned or is not writable by the current user. The cache has been disabled. Check the permissions and owner of that directory. >
Processing /build/ipympl-0.9.4
Running command Preparing metadata (pyproject.toml)
INFO:hatch_jupyter_builder.utils:Running jupyter-builder
INFO:hatch_jupyter_builder.utils:Building with hatch_jupyter_builder.npm_builder
INFO:hatch_jupyter_builder.utils:With kwargs: {'path': '.', 'build_cmd': 'build:prod', 'npm': ['jlpm']}
INFO:hatch_jupyter_builder.utils:Installing build dependencies with npm. This may take a while...
INFO:hatch_jupyter_builder.utils:> /nix/store/3ah78dwwli5k9zxwfw7nhdpycm82lp8g-python3.12-jupyterlab-4.2.4/bin/jlpm install
Internal Error: EACCES: permission denied, mkdir '/homeless-shelter'
Error: EACCES: permission denied, mkdir '/homeless-shelter'
Traceback (most recent call last):
File "/nix/store/9gd8kj409msfv599456ywbyi97izlbr4-python3.12-pip-24.0/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 353, in <module>
main()
File "/nix/store/9gd8kj409msfv599456ywbyi97izlbr4-python3.12-pip-24.0/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 335, in main
json_out['return_val'] = hook(**hook_input['kwargs'])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/9gd8kj409msfv599456ywbyi97izlbr4-python3.12-pip-24.0/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 152, in prepare_metadata_for_build_wheel
whl_basename = backend.build_wheel(metadata_directory, config_settings)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/nrwbrccny1ycgs0lhv7x4agic3ncxsyn-python3.12-hatchling-1.25.0/lib/python3.12/site-packages/hatchling/build.py", line 58, in build_wheel
return os.path.basename(next(builder.build(directory=wheel_directory, versions=['standard'])))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/nrwbrccny1ycgs0lhv7x4agic3ncxsyn-python3.12-hatchling-1.25.0/lib/python3.12/site-packages/hatchling/builders/plugin/interface.py", line 147, in build
build_hook.initialize(version, build_data)
File "/nix/store/qhp7ahvskg59nj49sr99gz78qfqsic34-python3.12-hatch-jupyter-builder-0.9.1/lib/python3.12/site-packages/hatch_jupyter_builder/plugin.py", line 94, in initialize
raise e
File "/nix/store/qhp7ahvskg59nj49sr99gz78qfqsic34-python3.12-hatch-jupyter-builder-0.9.1/lib/python3.12/site-packages/hatch_jupyter_builder/plugin.py", line 89, in initialize
build_func(self.target_name, version, **build_kwargs)
File "/nix/store/qhp7ahvskg59nj49sr99gz78qfqsic34-python3.12-hatch-jupyter-builder-0.9.1/lib/python3.12/site-packages/hatch_jupyter_builder/utils.py", line 115, in npm_builder
run([*npm_cmd, "install"], cwd=str(abs_path))
File "/nix/store/qhp7ahvskg59nj49sr99gz78qfqsic34-python3.12-hatch-jupyter-builder-0.9.1/lib/python3.12/site-packages/hatch_jupyter_builder/utils.py", line 231, in run
return subprocess.check_call(cmd, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/z7xxy35k7620hs6fn6la5fg2lgklv72l-python3-3.12.4/lib/python3.12/subprocess.py", line 413, in check_call
raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['/nix/store/3ah78dwwli5k9zxwfw7nhdpycm82lp8g-python3.12-jupyterlab-4.2.4/bin/jlpm', 'install']' returned non-zero exit status 1.
error: subprocess-exited-with-error
× Preparing metadata (pyproject.toml) did not run successfully.
│ exit code: 1
╰─> See above for output.
| 07:19:30 |