我们讨论如何设置 Python 3.9 Beta 开发环境

Synology DS218 DiskStation 运行 DSM 版本 7.1-42661 Update 1。

开发环境包括:pip、virtualenv、setuptools、wheel

和烧瓶开发网络服务器。

025-feature-image.jpg

Synology DS218:准备Python 3.9 Beta 完成开发环境。

Synology DS218 DiskStation -- 适用于小型办公室和家庭用户的多功能 2 槽 NAS是一款 Linux 设备。它运行一个名为 DSM 的 Linux 发行版,我的设备上的版本是 7.1-42661 Update 1。

有很多不同的 Linux 风格。在我研究这个主题的过程中,我意识到我会遇到一些困难。我做到了。我还没有找到关于如何做到这一点的完整指南,对我有用的步骤,我在这篇文章中汇总的这些步骤来自其他几个现有的帖子,我在此过程中列出了那些引用的帖子。

我想提一下,按照这篇文章如何使用 Synology Web Station 中的说明进行操作?,我已经成功地让 Apache 2.4 托管的基于 PHP 端口的虚拟站点在 30(三十)分钟内运行——我可以从我的 Windows 10 机器上访问它。 Python,不知何故并不那么简单。

目录

  • 确定 Synology NAS 的 IP 地址

  • 开启家庭服务

  • 启用 SSH

  • 从 Windows 10 SSH 到 DSM

  • 现有 Python 安装

  • 安装 Web Station 和 Python 3.9 Beta

*安装Web Station

*安装 Python 3.9 Beta

  • Python 3.9 Beta安装在哪里,如何调用?

  • 安装pip,升级pip,验证pip已经安装

*安装 pip

*升级点

*验证 pip 是否已安装

  • 检查 pip 版本

  • 更新设置工具和车轮包

  • 安装 virtualenv 并验证安装

*安装 virtualenv

*验证 virtualenv 是否已安装

  • 创建虚拟环境venv

  • 激活和停用虚拟环境 venv

*激活虚拟环境venv

*停用虚拟环境venv

  • 测试应用程序

*安装所需的包

*完成测试申请

*运行测试应用程序

  • 结束语

确定 Synology NAS 的 IP 地址

转到控制面板 > 网络 > 网络接口选项卡:在 LAN 下查看。

我的是 192.168.0.6——我将在这篇文章中引用它。

开启上门服务

主服务是指用户主目录。

“behai”是我第一次安装 DSM 时设置的用户。这不是根用户。

转到控制面板 > 用户和组 > 选择 behai > 高级选项卡:

勾选“启用用户家庭服务”,然后点击“应用”。

启用 SSH

转到控制面板 > 终端和 SNMP > 终端选项卡:

勾选“启用 SSH 服务”,然后点击“应用”。

从 Windows 10 SSH 到 DSM

在 Windows 命令提示符下,我们现在应该能够通过 SSH 访问 DSM 命令行,使用:

ssh behai@192.168.0.6

进入全屏模式 退出全屏模式

它会要求输入密码,这与我们用于登录设备的密码相同。

登录 SSH 终端后,两个命令:

$ echo $HOME
$ pwd

进入全屏模式 退出全屏模式

将返回相同的值,即主目录,我的是:

/var/services/homes/behai

进入全屏模式 退出全屏模式

现有的 Python 安装

在 Installed 下的 Package Center 中,它显示 Python2 已预先安装(当我们第一次安装时

帝斯曼)。

但两者:

$ python
$ python3

进入全屏模式 退出全屏模式

显示 Python 3.8.12,请看下面的屏幕截图:

[025-01.png](https://res.cloudinary.com/practicaldev/image/fetch/s--tDbkueAJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://behainguyen .files.wordpress.com/2022/06/025-01.png)

安装Web Station和Python 3.9 Beta

事后看来,我认为我需要 Web Station,但是,在这个阶段,我认为我还不需要 Web Station,但我确实安装了它。所以我会继续在这篇文章中包含这一步。

安装Web Station

首先,我按照如何使用 Synology Web Station?安装 Web Station,PHP 8.0,建立一个由 Apache 2.4 托管的基于 PHP 端口的虚拟站点,我能够让这个虚拟站点在 30(三十)分钟内运行——我可以从我的Windows 10 机器。

基本上,使用套件中心来安装 Web Station。安装将创建一个 Web 根目录:

/volume1/web/

进入全屏模式 退出全屏模式

File Station 也会看到此目录。

安装 Python 3.9 Beta

在这一点上,我想,类似于 PHP,我需要对 Python 执行相同的过程:

进入主菜单 > Web Station > 脚本语言设置 > Python 选项卡 - 请参阅下面的屏幕截图:

[025-02.png](https://res.cloudinary.com/practicaldev/image/fetch/s--I_7iRTMK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://behainguyen .files.wordpress.com/2022/06/025-02.png)

Python 3.8.12 已经安装了,但是还是说没有 Python 3 包。使用 Package Center 安装 Python 3.9 Beta。点击**“加入测试版”**进行安装。请参阅下面的屏幕截图:

[25-03.png](https://res.cloudinary.com/practicaldev/image/fetch/s--pPBq2kQQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://behainguyen .files.wordpress.com/2022/06/25-03.png)

在此之后,用户定义的 Python 3.9 自定义配置文件应出现在 Web Station 的脚本语言设置下。

Python 3.9 Beta安装在哪里,如何调用?

这篇文章Re-Install pip and virtualenv Site Packages After Package Center Python 3.8.2 Upgrade有点过时(我认为),但它有助于我弄清楚 Python 3.9 的安装位置:

/volume1/\@appstore/Python3.9/usr/bin/python3.9

进入全屏模式 退出全屏模式

实际上:

/volume1/\@appstore/Python3.9/usr/bin/ 

进入全屏模式 退出全屏模式

是 Python 3.9 相关工具所在的地方。该路径被系统识别。命令:

$ python3.9

进入全屏模式 退出全屏模式

应该运行。

安装pip,升级pip,验证pip已经安装

安装点子

我尝试了各种指示,但都没有奏效。这个https://jackgruber.github.io/2021-06-27-install-pip-on-synology/帖子有效。我改为python3.9:

$ sudo python3.9 -m ensurepip

进入全屏模式 退出全屏模式

请参阅以下屏幕截图:

[025-05-installing-pip.png](https://res.cloudinary.com/practicaldev/image/fetch/s--iYYR-ZVe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880 /https://behainguyen.files.wordpress.com/2022/06/025-05-installing-pip.png)

关于警告:

警告:以“root”用户身份运行 pip 可能会导致权限损坏以及与系统包管理器的行为发生冲突。建议改用虚拟环境:https://pip.pypa.io/warnings/venv

我还不知道这意味着什么。至于警告:

警告:脚本 pip3 和 pip3.9 安装在不在 PATH 上的“/var/packages/Python3.9/target/usr/bin”中。

考虑将此目录添加到 PATH,或者,如果您希望禁止显示此警告,请使用 --no-warn-script-location。

我还没有采取任何行动......我最初将使用完整路径。

升级点

要升级 pip,我运行了以下命令:

$ sudo python3.9 -m pip install --upgrade pip

进入全屏模式 退出全屏模式

我暂时也只是在警告中睡觉,直到某些东西停止工作。

验证 pip 是否已安装

使用这个已经提到的帖子Re-Install pip and virtualenv Site Packages After Package Center Python 3.8.2 Upgrade,以下命令验证 pip 目录是否存在:

$ ls -l /volume1/\@appstore/Python3.9/usr/lib/python3.9/site-packages

进入全屏模式 退出全屏模式

pip、pip3、pip3.9 和 pip3.10 也存在于:

$ ls -l /volume1/\@appstore/Python3.9/usr/bin

进入全屏模式 退出全屏模式

检查 pip 版本

**我已经尝试了各种命令,但没有一个有效。我目前不知道该怎么做**.等我弄清楚后我会发布更新。

更新 setuptools 和 wheel 包

运行此命令:

$ sudo python3.9 -m pip install --upgrade pip setuptools wheel

进入全屏模式 退出全屏模式

我包括了 pip,这是不必要的,因为它已经完成了。

安装 virtualenv 并验证安装

安装 virtualenv

运行此命令:

$ sudo /volume1/\@appstore/Python3.9/usr/bin/python3.9 -m pip install virtualenv

进入全屏模式 退出全屏模式

我包含了python3.9的完整路径,我认为没有必要。

验证 virtualenv 是否已安装

要验证,请运行以下命令:

$ ls /volume1/\@appstore/Python3.9/usr/lib/python3.9/site-packages

进入全屏模式 退出全屏模式

请参见下面的屏幕截图,virtualenv 已安装:

[025-07-installing-virtualenv-a.png](https://res.cloudinary.com/practicaldev/image/fetch/s--6dUD4hkA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880 /https://behainguyen.files.wordpress.com/2022/06/025-07-installing-virtualenv-a.png)

bin 目录是相关的可执行文件所在的位置:

$ ls -l /volume1/\@appstore/Python3.9/usr/bin/

进入全屏模式 退出全屏模式

请在下面的屏幕截图中查看输出:

[025-07-installing-virtualenv-b.png](https://res.cloudinary.com/practicaldev/image/fetch/s--79dV4poY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880 /https://behainguyen.files.wordpress.com/2022/06/025-07-installing-virtualenv-b.png)

创建虚拟环境venv

在 $HOME 下,即 /var/services/homes/behai/ 目录下,使用命令创建目录 app_demo:

$ mkdir app_demo

进入全屏模式 退出全屏模式

然后进入这个目录:

$ cd app_demo

进入全屏模式 退出全屏模式

发出以下命令以创建虚拟环境 venv:

$ sudo /volume1/\@appstore/Python3.9/usr/bin/virtualenv -p python3.9 venv

进入全屏模式 退出全屏模式

验证 venv 创建:

$ ls -l venv/

进入全屏模式 退出全屏模式

检查 venv/bin 目录:

$ ls -l venv/bin/

进入全屏模式 退出全屏模式

-- 我们也可以使用 File Station 来查看这些目录的内容。

这些命令的运行如下面的屏幕截图所示:

[025-08-creating-virtual-environment-venv.png](https://res.cloudinary.com/practicaldev/image/fetch/s--Z12Q1cDo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto %2Cw_880/https://behainguyen.files.wordpress.com/2022/06/025-08-creating-virtual-environment-venv.png)

请注意,在 Windows 中,venv\Scripts\ 等同于 venv/bin。

激活和停用虚拟环境 venv

激活虚拟环境venv

要激活,请运行:

$ source venv/bin/activate

进入全屏模式 退出全屏模式

提示更改如下面的屏幕截图所示:

[025-09-activate-virtual-environment-venv.png](https://res.cloudinary.com/practicaldev/image/fetch/s--ptdJ_hVV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto %2Cw_880/https://behainguyen.files.wordpress.com/2022/06/025-09-activate-virtual-environment-venv.png)

停用虚拟环境venv

**我还不知道如何禁用它。我不确定 venv/bin/deactivate.nu 的用途。我也找不到关于它的信息**。我只是终止了 SSH 会话,重新进入,它仍然有效。

测试应用

这部分类似于Python: Application (Self) Installation, Built Distribution and Test the Built Distribution。 ,这是我为 Windows 10 编写的。

安装所需的包

在 /var/services/homes/behai/app_demo 下,创建 setup.py 文件和 src/ 目录。

/var/services/homes/behai/app_demo
|
|-- setup.py
|
|-- src/

进入全屏模式 退出全屏模式

File /var/services/homes/behai/app_demo/setup.py

进入全屏模式 退出全屏模式

"""Installation script for flask_restx demo project."""
from pathlib import Path
from setuptools import setup, find_packages

setup(
    name='dsm-python-demo',
    description='flask dev server on Synology DSM demo.',
    version='1.0.0',
    author='Van Be Hai Nguyen',
    author_email='behai_nguyen@hotmail.com',
    packages=find_packages(where="src"),
    package_dir={"": "src"},
    python_requires='>=3.9',
    install_requires=[
        'Flask',
        'python-dotenv',
    ],
)

进入全屏模式 退出全屏模式

运行以下命令为我们要编写的测试应用程序安装包:

$ sudo venv/bin/pip install -e .

进入全屏模式 退出全屏模式

这应该没有问题地运行。完成后,使用 File Station 扫描目录以验证我们是否安装了指定的软件包。

完成测试申请

2022 年 7 月 21 日更新 - 可以使用以下代码从 GitHub 克隆代码:

git clone -b v1.0.0 https://github.com/behai-nguyen/app-demo.git

进入全屏模式 退出全屏模式

现在创建应用程序的其余部分:

/var/services/homes/behai/app_demo/
|
|-- .env
|-- app.py
|-- setup.py
|
|-- src/
|   |
|   |-- app_demo/
|       |   
|       |-- __init__.py
|       |-- config.py
|
|-- venv/

进入全屏模式 退出全屏模式

File /var/services/homes/behai/app_demo/.env

进入全屏模式 退出全屏模式

FLASK_APP=app.py
FLASK_ENV=development
SECRET_KEY=">s3g;?uV^K=`!(3.#ms_cdfy<c4ty%"

进入全屏模式 退出全屏模式

File /var/services/homes/behai/app_demo/app.py

进入全屏模式 退出全屏模式

"""Flask Application entry point."""

from app_demo import create_app

app = create_app()

进入全屏模式 退出全屏模式

File /var/services/homes/behai/app_demo/src/app_demo/__init__.py

进入全屏模式 退出全屏模式

"""Flask app initialization via factory pattern."""
from flask import Flask

from app_demo.config import get_config

def create_app():
    app = Flask( 'dsm-python-demo' )

    app.config.from_object( get_config() )

    @app.route( '/' )
    def hello_world():
        return '<p>Hello, World!</p>'

    return app

进入全屏模式 退出全屏模式

File /var/services/homes/behai/app_demo/src/app_demo/config.py

进入全屏模式 退出全屏模式

"""Flask app config settings."""
import os

class Config:
    """Set Flask configuration from .env file."""

    # General Config
    SECRET_KEY = os.getenv( 'SECRET_KEY' )
    FLASK_APP = os.getenv( 'FLASK_APP' )
    FLASK_ENV = os.getenv( 'FLASK_ENV' )

def get_config():
    """Retrieve environment configuration settings."""
    return Config

进入全屏模式 退出全屏模式

运行测试应用程序

运行它:

$ sudo venv/bin/flask run --host=0.0.0.0 --port=9090

进入全屏模式 退出全屏模式

[025-10-run-test-app-a.png](https://res.cloudinary.com/practicaldev/image/fetch/s--aP7V96q6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto %2Cw_880/https://behainguyen.files.wordpress.com/2022/06/025-10-run-test-app-a.png)

在 Windows 中,打开此 URL http://192.168.0.6:9090/:

应用程序按预期响应:

[025-10-run-test-app-b.png](https://res.cloudinary.com/practicaldev/image/fetch/s--mqeA95xt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto %2Cw_880/https://behainguyen.files.wordpress.com/2022/06/025-10-run-test-app-b.png)

回想一下,192.168.0.6 是我的 Synology NAS 地址。

结束语

这是一个有趣的练习。一路走来,我学到了很多东西。我真正想要实现的是让 DSM Apache 2.4 Web 服务器以与 Internet 信息服务 (IIS) 类似的方式托管 Python Web 应用程序——我已经完成并在Python:hosting a virtualenv Flask application in Windows 中进行了描述10 Pro 的 Internet Information Services (IIS)。我会继续朝着这个目标努力,等我学会了,我会再做一个帖子,并且成功地做到了。

感谢您的阅读,我希望这篇文章对您有用。

Logo

学AI,认准AI Studio!GPU算力,限时免费领,邀请好友解锁更多惊喜福利 >>>

更多推荐