web-dev-qa-db-fra.com

Installation de pip sur un DSM/Synology

Je travaille sur un programme utilisant Python 3 depuis quelques mois. Je le teste depuis quelque temps déjà et cela semble fonctionner comme il se doit. J'ai donc essayé de le faire fonctionner sur un DSM/Synology (Modèle: DS209 +, Version: DSM 4.2-3259). Malheureusement, je ne connais rien à cet environnement . J'ai donc installé python3 (3.3.2-0005) à partir du Centre de paquets Synology et je l'ai fait fonctionner. Exécuter mon code fonctionne ... Le seul problème est que mon programme utilise la bibliothèque "request". Cependant, je ne peux tout simplement pas faire fonctionner pip. Pour installer pip, j'ai essayé d'utiliser la ligne suivante dans PuTTY.

curl -k https://bootstrap.pypa.io/get-pip.py | python3

Je m'attendrais à ce que pip télécharge/installe et l'utilise pour obtenir la bibliothèque de demandes. Mais alors cela se produit et je ne sais pas ce que j'ai fait de travers:

The directory '/var/services/homes/admin/.cache/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with Sudo, you may want Sudo's -H flag.
The directory '/var/services/homes/admin/.cache/pip' or its parent directory is not owned by the current user and caching wheels has been disabled. check the permissions and owner of that directory. If executing pip with Sudo, you may want Sudo's -H flag.
Collecting pip
  Downloading pip-9.0.1-py2.py3-none-any.whl (1.3MB)
    100% |################################| 1.3MB 131kB/s
Collecting setuptools
  Downloading setuptools-38.2.4-py2.py3-none-any.whl (489kB)
    100% |################################| 491kB 305kB/s
Collecting wheel
  Downloading wheel-0.30.0-py2.py3-none-any.whl (49kB)
    100% |################################| 51kB 296kB/s
Installing collected packages: pip, setuptools, wheel
Exception:
Traceback (most recent call last):
  File "/usr/local/lib/python3.3/distutils/sysconfig.py", line 449, in _init_posix
    with open(filename) as file:
FileNotFoundError: [Errno 2] No such file or directory: '/usr/local/include/python3.3m/pyconfig.h'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/tmp/tmpdqp31o/pip.Zip/pip/basecommand.py", line 215, in main
    status = self.run(options, args)
  File "/tmp/tmpdqp31o/pip.Zip/pip/commands/install.py", line 342, in run
    prefix=options.prefix_path,
  File "/tmp/tmpdqp31o/pip.Zip/pip/req/req_set.py", line 784, in install
    **kwargs
  File "/tmp/tmpdqp31o/pip.Zip/pip/req/req_install.py", line 851, in install
    self.move_wheel_files(self.source_dir, root=root, prefix=prefix)
  File "/tmp/tmpdqp31o/pip.Zip/pip/req/req_install.py", line 1064, in move_wheel_files
    isolated=self.isolated,
  File "/tmp/tmpdqp31o/pip.Zip/pip/wheel.py", line 247, in move_wheel_files
    prefix=prefix,
  File "/tmp/tmpdqp31o/pip.Zip/pip/locations.py", line 153, in distutils_scheme
    i.finalize_options()
  File "/usr/local/lib/python3.3/distutils/command/install.py", line 313, in finalize_options
    (prefix, exec_prefix) = get_config_vars('prefix', 'exec_prefix')
  File "/usr/local/lib/python3.3/distutils/sysconfig.py", line 531, in get_config_vars
    func()
  File "/usr/local/lib/python3.3/distutils/sysconfig.py", line 456, in _init_posix
    raise DistutilsPlatformError(my_msg)
distutils.errors.DistutilsPlatformError: invalid Python installation: unable to open /usr/local/include/python3.3m/pyconfig.h (No such file or directory)

Il semble que l'utilisation de Sudo -H résoudrait le problème. Cependant, je ne sais pas comment faire cela ni par où commencer. Googler la question n'a pas beaucoup aidé non plus parce que les choses que j'ai trouvées étaient soit trop vagues pour que je puisse comprendre, soit qu'ils avaient ce problème avec pip déjà installé . J'espère que cette question n'est pas trop vague non plus.

3
user8357325

Comme @hoefling déjà mentionné, c'est une question de privilège.

Connexion via SSH

ssh user@synology

et entrez le mot de passe de l'utilisateur.

Obtenir les privilèges d'administrateur

Sudo su

et entrez le mot de passe Sudo.

Obtenir le fichier d'installation

wget https://bootstrap.pypa.io/get-pip.py

et exécutez le fichier d'installation.

python get-pip.py

Faites-moi savoir si cela a fonctionné pour vous.

7
anonjnr

Lors de l'utilisation d'un nouveau venv pip est disponible automatiquement. Par exemple:

user@Host:~$ python3 -m venv env
user@Host:~$ . env/bin/activate
(env) user@Host:~$ pip --version
pip 7.1.2 from /volume1/homes/user/env/lib/python3.5/site-packages (python 3.5)

Après cela, vous pouvez mettre à niveau pip vers la version actuelle:

user@Host:~$ pip install --upgrade pip
...
Successfully installed pip-18.0

Cela présente également l’avantage que l’installation de packages avec pip ne peut pas casser le système python.

Pour activer automatiquement votre environnement, vous pouvez créer un .profile:

user@Host:~$ touch ~/.profile
user@Host:~$ chmod u=rwx ~/.profile

puis faites en sorte que le contenu ressemble à ceci:

#!/bin/sh
. env/bin/activate
5
roskakori

Connectez-vous à DSM avec la permission root via SSH/Telnet :

  • SSH sur votre périphérique Synology à l’aide de votre compte admin: ssh [email protected]
  • Exécutez Sudo -i pour passer à root.

Après vous être connecté en tant que root, vous disposez des autorisations nécessaires pour installer pip:

root@x:~# curl -k https://bootstrap.pypa.io/get-pip.py | python3
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 1558k  100 1558k    0     0  1076k      0  0:00:01  0:00:01 --:--:-- 1076k
Collecting pip
  Downloading pip-9.0.1-py2.py3-none-any.whl (1.3MB)
    100% |████████████████████████████████| 1.3MB 506kB/s
Collecting setuptools
  Downloading setuptools-38.4.0-py2.py3-none-any.whl (489kB)
    100% |████████████████████████████████| 491kB 1.1MB/s
Collecting wheel
  Using cached wheel-0.30.0-py2.py3-none-any.whl
Installing collected packages: pip, setuptools, wheel
Successfully installed pip-9.0.1 setuptools-38.4.0 wheel-0.30.0
2
Mati