Python 在 Synology,如何安装 Python3 模块以及 Python2.7 安装在哪里?

Python at Synology, how to get Python3 modules installed and where is Python2.7 installed?

你能告诉我如何在我的 Synology(DS214play,DSM 6.0.1-7393 更新 1)上获得 Python3 模块 运行ning 吗? 我想要的:运行 Tweepy 和我 Synology 上 Python3 中的其他模块。

我卡在哪里:

  1. 如何让 PIP3 安装 Tweepy,如果我尝试我得到:Requirement already up-to-date: pip in /usr/lib/python2.7/site-packages

    显然我安装了 Python 2.7,但我不知道...

    root@DiskStation:/volume1/@appstore/python3/include# ls
    get-pip.py  python3.4m
    root@DiskStation:/volume1/@appstore/python3/include# python3 get-pip.py
    -ash: python3: command not found
    root@DiskStation:/volume1/@appstore/python3/include# python get-pip.py
    Requirement already up-to-date: pip in /usr/lib/python2.7/site-packages
    
  2. 所以为了让 PIP3 工作,我需要了解 Python2.7 的安装位置,甚至可能如何删除它(如果有必要)。

  3. 并且最好知道哪个 Python3 套件最适合使用(默认来自 Synology DSM 套件管理器或 SynoCommunity Python3 套件)

因为当通过 SSH(使用 PuTTY)连接到我的 Synology 时,我可以在 DSM 套件管理器和相关文件夹中看到 Python3。

但是我没有看到 Python2.7 的任何包(我相信它一定在那里)并且当与 SSH 连接时我找不到任何 Python 2.7 文件夹我有提示某处必须有一个“/usr/lib/python2.7/site-packages”文件夹...

-> Synology DSM 套件管理器的默认 Python3 位于 py3k 文件夹中:

admin@DiskStation: /volume1/@appstore/py3k/usr/local/bin$
python3

-> SynoCommunity Python3 软件包安装在不同的地方:

admin@DiskStation: /volume1/@appstore/python3$ ls
bin  etc  include  install.log  lib  openssl.cnf  share
admin@DiskStation: /volume1/@appstore/python3/bin$ ls
2to3      busybox  bzfgrep       bzmore     delgroup          fatattr    infocmp    lzmainfo  pip3      python3.4   reset     start-stop-daemon  tset        virtualenv-3.4  xz
2to3-3.4  bzcat    bzgrep        captoinfo  deluser           gpg-error  infotocap  mpicalc   pip3.4    python3.4m  shuf      tabs               unlink      wheel           xzcat
addgroup  bzcmp    bzip2         clear      dumpsexp          hmac256    lzcat      nice      pydoc3    pyvenv      speexdec  tic                unlzma      xmlcatalog      xzdec
adduser   bzdiff   bzip2recover  c_rehash   easy_install      idle3      lzma       openssl   pydoc3.4  pyvenv-3.4  speexenc  toe                unxz        xmllint
bunzip2   bzegrep  bzless        curl       easy_install-3.4  idle3.4    lzmadec    pip       python3   renice      sqlite3   tput               virtualenv  xsltproc
admin@DiskStation:/volume1/@appstore/python3/bin$ python3
-sh: python3: command not found

我做了什么:

我使用 Synology DSM 包管理器安装 Python3,然后使用 SSH(使用 PuTTY)连接到我的 Synology 并设置 PATH 并使用 PIP 安装 Tweepy 和其他模块。

我相信它与某些命令有关,例如:(不幸的是,大部分都是复制粘贴而不知道其详细含义...)

root@DiskStation:~# curl -k https://bootstrap.pypa.io/get-pip.py | python
  % Total % Received % Xferd Average Speed Time Time Time Current
  Dload Upload Total Spent Left Speed
100 1488k 100 1488k 0 0 1577k 0 --:--:-- --:--:-- --:--:-- 1577k
Collecting pip
  Using cached pip-8.1.2-py2.py3-none-any.whl
Collecting setuptools
  Downloading setuptools-23.1.0-py2.py3-none-any.whl (435kB)
  100% |████████████████████████████████| 440kB 551kB/s
Collecting wheel
  Using cached wheel-0.29.0-py2.py3-none-any.whl
Installing collected packages: pip, setuptools, wheel
Successfully installed pip-8.1.2 setuptools-23.1.0 wheel-0.29.0

我能够运行 以此为基础编写脚本并且非常高兴。直到我收到一些 (Unicode) 错误,并且从错误日志中看到我的 Synology 上的 Python 是 运行 的 2.7 版本。这些 Unicode 问题似乎已在 Python3 中解决(我的 PC 上也有)所以我也希望在 Synology 上也有 Python3。

并且确实安装了 2.7 版本,如果我使用 SSH 连接并输入 Python 我得到:

admin@DiskStation:~$ python
Python 2.7.11 (default, May 13 2016, 05:16:12)
[GCC 4.9.3 20150311 (prerelease)] on linux2
Type "help", "copyright", "credits" or "license" for more information.

这很奇怪,因为我在 Synology 的包管理器中没有看到任何 Python 2.7 包,所以我一定是通过一些专用于 PIP 的 SSH 命令安装了 2.7。

我在 Synology 安装了默认的 Python3 软件包,如果我输入 admin@DiskStation:~$ python3 我确实准备好 python3 了。

在 /volume1/@appstore/py3k/ 中,我看到了各种 Python 和 PIP 版本,python3 效果很好。但是,如果没有任何模块,PIP3 也不起作用("command not found"),我从所有可能的目录和各种格式中尝试了它,如类似问答中所建议的那样,例如pip3.4 install tweepy, pip3 install tweepy, etc.

现在使用 DSM 包管理器,我卸载了 Python3 并安装了 SynoCommunity Python3(如 Synology forum here 上的建议),它显示了不同的目录结构。但似乎更糟,因为现在我再也看不到对 Python 2.7 的引用(但它仍然 运行s 所以必须存在)甚至无法启动 python3:

admin@DiskStation:~$ cd /volume1
admin@DiskStation:/volume1$ cd @appstore
admin@DiskStation:/volume1/@appstore$ cd python3
admin@DiskStation:/volume1/@appstore/python3$ ls
bin  etc  include  install.log  lib  openssl.cnf  share
admin@DiskStation:/volume1/@appstore/python3$ cd bin
admin@DiskStation:/volume1/@appstore/python3/bin$ ls
2to3      bzcmp         bzless     deluser           idle3      lzmainfo  pydoc3      renice             tabs    unxz            xz
2to3-3.4  bzdiff        bzmore     dumpsexp          idle3.4    mpicalc   pydoc3.4    reset              tic     virtualenv      xzcat
addgroup  bzegrep       captoinfo  easy_install      infocmp    nice      python3     shuf               toe     virtualenv-3.4  xzdec
adduser   bzfgrep       clear      easy_install-3.4  infotocap  openssl   python3.4   speexdec           tput    wheel
bunzip2   bzgrep        c_rehash   fatattr           lzcat      pip       python3.4m  speexenc           tset    xmlcatalog
busybox   bzip2         curl       gpg-error         lzma       pip3      pyvenv      sqlite3            unlink  xmllint
bzcat     bzip2recover  delgroup   hmac256           lzmadec    pip3.4     pyvenv-3.4  start-stop-daemon  unlzma  xsltproc
admin@DiskStation:/volume1/@appstore/python3/bin$ python3
-sh: python3: command not found
admin@DiskStation:/volume1/@appstore/python3/bin$ python
Python 2.7.11 (default, May 13 2016, 05:16:12)
[GCC 4.9.3 20150311 (prerelease)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>

所以我到了要求一些技巧、提示和建议的地步。

我不确定您是否可以完全删除 Python 2,但您可以安装 Python 3 并专门调用它而不是 Python 2。

首先,确保 Python 3 已安装: 通过 Web 管理登录到您的 Synology,并在 'Package Center' 中确保安装了 'Python 3'。 (您会在 'Package Center' 中的 'Developer Tools' 下找到它)

接下来,具体唤起Python3只需调用python3

您也可以尝试在 Synology 上使用 locate 命令来查找 Python 的确切位置 2. 为此,请在您的 Synology 上输入以下内容:

ipkg update
ipkg install mlocate

下面是关于如何使用命令的教程:http://www.thegeekstuff.com/2012/03/locate-command-examples/

祝你好运!

此外, 如果您在 Stack Overflow 上运气不佳,我也会 运行 到 Synology 论坛寻求帮助:https://forum.synology.com

好的,非常感谢您的回复,我解决了这个问题:

  1. 已确认 Python 2.7.9 默认安装在 Synology DSM 5.2 中(并且在套件中心不可见)。

  2. 我能够通过使用此命令专门为 Python3 调用 pip 模块安装来向 Python3 添加模块:(thx to this Q&A

    /volume1/@appstore/py3k/usr/local/lib/python3.5/site-packages/pip 安装 tweepy

(在这种情况下安装 tweepy 模块)

以及仅供参考的完整命令概述:

admin@DiskStation:/volume1/@appstore/py3k/usr/local/lib/python3.5/site-packages$ sudo -i
Password:
root@DiskStation:~# curl -O https://bootstrap.pypa.io/get-pip.py
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 1488k  100 1488k    0     0  1704k      0 --:--:-- --:--:-- --:--:-- 1703k
root@DiskStation:~# sudo python3 get-pip.py
Requirement already up-to-date: pip in /volume1/@appstore/py3k/usr/local/lib/python3.5/site-packages
root@DiskStation:~# pip install tweepy
Requirement already satisfied (use --upgrade to upgrade): tweepy in /usr/lib/python2.7/site-packages
Requirement already satisfied (use --upgrade to upgrade): six>=1.7.3 in /usr/lib/python2.7/site-packages (from tweepy)
Requirement already satisfied (use --upgrade to upgrade): requests>=2.4.3 in /usr/lib/python2.7/site-packages (from tweepy)
Requirement already satisfied (use --upgrade to upgrade): requests-oauthlib>=0.4.1 in /usr/lib/python2.7/site-packages (from tweepy)
Requirement already satisfied (use --upgrade to upgrade): oauthlib>=0.6.2 in /usr/lib/python2.7/site-packages (from requests-oauthlib>=0.4.1->tweepy)
root@DiskStation:~# python3 ^C
root@DiskStation:~# python3 /volume1/@appstore/py3k/usr/local/lib/python3.5/site-packages/pip install tweepy
Collecting tweepy
  Using cached tweepy-3.5.0-py2.py3-none-any.whl
Collecting requests-oauthlib>=0.4.1 (from tweepy)
  Using cached requests_oauthlib-0.6.1-py2.py3-none-any.whl
Collecting requests>=2.4.3 (from tweepy)
  Using cached requests-2.10.0-py2.py3-none-any.whl
Collecting six>=1.7.3 (from tweepy)
  Using cached six-1.10.0-py2.py3-none-any.whl
Collecting oauthlib>=0.6.2 (from requests-oauthlib>=0.4.1->tweepy)
  Using cached oauthlib-1.1.2.tar.gz
Building wheels for collected packages: oauthlib
  Running setup.py bdist_wheel for oauthlib ... done
  Stored in directory: /root/.cache/pip/wheels/e6/be/43/e4a2ca8cb9c78fbd9b5b14b96cb7a5cc43f36bc11af5dfac5b
Successfully built oauthlib
Installing collected packages: requests, oauthlib, requests-oauthlib, six, tweepy
Successfully installed oauthlib-1.1.2 requests-2.10.0 requests-oauthlib-0.6.1 six-1.10.0 tweepy-3.5.0

(而且我又卸载了SynoCommunity Python3 套件,现在使用DSM 套件中心Python3 版本)

  • (1)安装 python2.7 和 python3.5 来自 DSM 软件包
  • (2)ssh 登录 & sudo -i
  • (3)运行 python 和 运行 python3,如果下一步都进行。
  • (4)运行 pip -V 应该 return pip 10.0.1,它是为了 python2.7
  • (5)运行 pip3 -V return "command not found",..因为路径不对。
  • (6)尝试 /volume1/@appstore/py3k/usr/local/bin/pip3 -V,
    如果成功。下一步。现在您可以为 python3、
    安装模块 不同的路径取决于您的系统,例如命令:
    /volume1/@appstore/py3k/usr/local/bin/pip3 install numpy 应该可以!
  • (7)为了方便,命令越短越好,下一步:
    sudo vi .profile,(或特定用户登录的 .bashrc)
  • (8)在末尾添加别名:
    别名 pip3='/volume1/@appstore/py3k/usr/local/bin/pip3'
  • (9)source .profile 或 sudo reboot
  • (10)test pip3 -V,应该适用于 python3.x