你能告诉我如何在我的 Synology(DS214play,DSM 6.0.1-7393 更新 1)上运行带有模块的 Python3 吗?我想要的:在我的 Synology 上用 Python3 运行 Tweepy 和其他模块。
我被困在哪里:
- 如何让 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
所以为了让 PIP3 工作,我需要了解 Python2.7 的安装位置,甚至可能如何删除它(如果有必要)。
最好知道哪个 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 包,所以我一定是通过一些 SSH 命令安装了 2.7,我只打算用于 PIP。
我在 Synology 安装了默认的 Python3 包,如果我输入 admin@DiskStation:~$ python3
我确实准备好使用 python3。
在 /volume1/@appstore/py3k/ 中,我看到了各种 Python 和 PIP 版本,并且 python3 运行良好。但是,如果没有任何模块,PIP3 不起作用(“找不到命令”),我从所有可能的目录和各种格式中尝试了它,如类似问答中所建议的那样,例如 pip3.4 install tweepy, pip3 install tweepy, etc.
所以现在使用 DSM 包管理器,我卸载了 Python3 并安装了 SynoCommunity Python3(如 Synology 论坛 上的建议),它显示了不同的目录结构。但似乎更糟,因为现在我再也看不到对 Python 2.7 的引用(但它仍然运行所以必须存在)甚至无法启动 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.
>>>
所以我到了要求一些技巧、提示和建议的地步。
原文由 Wouter 发布,翻译遵循 CC BY-SA 4.0 许可协议
我不确定您是否可以完全删除 Python 2,但您可以安装 Python 3 并专门调用它而不是 Python 2。
首先,确保已安装 Python 3:通过 Web 管理登录 Synology,并在“套件中心”中确保已安装“Python 3”。 (您可以在“套件中心”的“开发者工具”下找到它)
接下来,通过简单地调用
python3
具体唤起 Python 3您也可以尝试在 Synology 上使用 locate 命令来查找 Python 2 的确切位置。为此,请在 Synology 上输入以下内容:
这是有关如何使用该命令的教程: http ://www.thegeekstuff.com/2012/03/locate-command-examples/
祝你好运!
此外,如果您在 Stack Overflow 上运气不佳,我也会跑到 Synology 论坛寻求帮助: https ://forum.synology.com