Django-Admin 4.2.5 on FreeBSD 13.2

Django(发音:[`dʒæŋɡəʊ],D不发音)是一个开源Web应用框架,由Python写成,遵循MVC/MTV模式,在BSD许可证下发行。
MIS(信息管理系统)的基础数据维护(CURD增改查删)重复且繁琐,Django-Admin读取元数据自动生成相应的管理界面,管理者可以通过Django-Admin维护基础数据以及设置权限。Django-Admin模块具有很强的可扩展性,可以基于原框架做定制化开发。
本文讲述如何在FreeBSD 13.2中安装Django-Admin,并实际创建一个MIS项目。

硬件环境

Lenovo ThinkPad T14 Gen2 20W1S3H811: Intel i5-1145G7 + DDR4 16GB + NVMe 512GB

虚拟机宿主环境

Win11 x64 Build 22621.2134 英文专业版 + VirtualBox v7.0.8 r156879

虚拟机客户机软件环境

FreeBSD 13.2默认安装,pkg已换国内源,pkg update已完成,pkg upgrade已完成,Screen 4.09.00已安装,openssh-server允许root远程登录。

安装Django框架于Python虚拟环境

安装py39-pip
pkg search python3
python310-3.10.13 Interpreted object-oriented programming language
python311-3.11.5 Interpreted object-oriented programming language
python38-3.8.18 Interpreted object-oriented programming language
python39-3.9.18 Interpreted object-oriented programming language

可以看到FreeBSD中可用的Python3有3.8/3.9/3.10/3.11等版本
pkg search py311-pip
无结果
pkg search py310-pip
无结果
pkg search py39-pip
py39-pip-23.1.2 Tool for installing and managing Python packages
pkg install -y py39-pip-23.1.2

The following 8 package(s) will be affected (of 0 checked):
New packages to be INSTALLED:
compat10x-amd64: 10.4.1004000.20181014 [FreeBSD]
gettext-runtime: 0.21.1 [cn]
libffi: 3.4.4 [cn]
mpdecimal: 2.5.1 [cn]
py39-pip: 23.1.2 [cn]
py39-setuptools: 63.1.0_1 [cn]
python39: 3.9.18 [cn]
readline: 8.2.1 [cn]
...
Checking integrity… done (0 conflicting)
[1/8] Installing mpdecimal-2.5.1…
[1/8] Extracting mpdecimal-2.5.1: 100%
...
[8/8] Installing py39-pip-23.1.2…
[8/8] Extracting py39-pip-23.1.2: 100%
=====
Message from python39-3.9.18:
--
Note that some standard Python modules are provided as separate ports
as they require additional dependencies. They are available as:
py39-gdbm databases/py-gdbm@py39
py39-sqlite3 databases/py-sqlite3@py39
py39-tkinter x11-toolkits/py-tkinter@py39
=====
Message from py39-pip-23.1.2:
--
pip MUST ONLY be used:
* With the --user flag, OR
* To install or manage Python packages in virtual environments
Failure to follow this warning can and will result in an inconsistent
system-wide Python environment (LOCALBASE/lib/pythonX.Y/site-packages) and
cause errors.
Avoid using pip as root unless you know what you're doing.

可以看到会把对应版本的python也一起安装,此处是python 3.9.18
另外,安装过程提示py39-sqlite3并未随py39-pip一起安装。需要手动安装,否则后面Django默认使用Sqlite3数据库时会报错找不到 _sqlite 模块,无法import相关函数。
安装py39-sqlite3
pkg search py39-sqlite3
py39-sqlite3-3.9.18_7 Standard Python binding to the SQLite3 library (Python 3.9)
pkg install -y py39-sqlite3-3.9.18_7
...
The following 5 package(s) will be affected (of 0 checked):
New packages to be INSTALLED:
icu: 73.2,1 [FreeBSD]
libedit: 3.1.20221030,1 [cn]
py39-sqlite3: 3.9.18_7 [cn]
sqlite3: 3.42.0,1 [cn]
tcl86: 8.6.13 [FreeBSD]
Number of packages to be installed: 5
The process will require 70 MiB more space.
15 MiB to be downloaded.
[1/5] Fetching libedit-3.1.20221030,1.pkg: 100% 140 KiB 143.3kB/s 00:01
[2/5] Fetching icu-73.2,1.pkg: 100% 11 MiB 1.7MB/s 00:07
[3/5] Fetching sqlite3-3.42.0,1.pkg: 100% 1 MiB 1.4MB/s 00:01
[4/5] Fetching py39-sqlite3-3.9.18_7.pkg: 100% 30 KiB 30.8kB/s 00:01
[5/5] Fetching tcl86-8.6.13.pkg: 100% 2 MiB 1.3MB/s 00:02
Checking integrity… done (0 conflicting)
[1/5] Installing libedit-3.1.20221030,1…
[1/5] Extracting libedit-3.1.20221030,1: 100%
[2/5] Installing sqlite3-3.42.0,1…
[2/5] Extracting sqlite3-3.42.0,1: 100%
[3/5] Installing icu-73.2,1…
[3/5] Extracting icu-73.2,1: 100%
[4/5] Installing py39-sqlite3-3.9.18_7…
[4/5] Extracting py39-sqlite3-3.9.18_7: 100%
[5/5] Installing tcl86-8.6.13…
[5/5] Extracting tcl86-8.6.13: 100%

查看pip版本
pip -V
pip 23.1.2 from /usr/local/lib/python3.9/site-packages/pip (python 3.9)
安装virtualenv
pip install virtualenv
Collecting virtualenv
WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError(': Failed to establish a new connection: [Errno 8] Name does not resolve')': /packages/4e/8b/f0d3a468c0186c603217a6656ea4f49259630e8ed99558501d92f6ff7dc3/virtualenv-20.24.5-py3-none-any.whl
WARNING: Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError(': Failed to establish a new connection: [Errno 65] No route to host')': /packages/4e/8b/f0d3a468c0186c603217a6656ea4f49259630e8ed99558501d92f6ff7dc3/virtualenv-20.24.5-py3-none-any.whl
Downloading virtualenv-20.24.5-py3-none-any.whl (3.7 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.7/3.7 MB 501.9 kB/s eta 0:00:00
Collecting distlib<1,>=0.3.7 (from virtualenv)
Downloading distlib-0.3.7-py2.py3-none-any.whl (468 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 468.9/468.9 kB 553.2 kB/s eta 0:00:00
Collecting filelock<4,>=3.12.2 (from virtualenv)
Downloading filelock-3.12.4-py3-none-any.whl (11 kB)
Collecting platformdirs<4,>=3.9.1 (from virtualenv)
Downloading platformdirs-3.10.0-py3-none-any.whl (17 kB)
Installing collected packages: distlib, platformdirs, filelock, virtualenv
Successfully installed distlib-0.3.7 filelock-3.12.4 platformdirs-3.10.0 virtualenv-20.24.5
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv

查看virtualenv版本
virtualenv --version
virtualenv 20.24.5 from /usr/local/lib/python3.9/site-packages/virtualenv/__init__.py

创建python虚拟环境myEnv
virtualenv myEnv
created virtual environment CPython3.9.18.final.0-64 in 1489ms
creator CPython3Posix(dest=/root/myEnv, clear=False, no_vcs_ignore=False, global=False)
seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=/root/.local/share/virtualenv)
added seed packages: pip==23.2.1, setuptools==68.2.0, wheel==0.41.2
activators BashActivator,CShellActivator,FishActivator,NushellActivator,PowerShellActivator,PythonActivator

激活虚拟环境myEnv
cd myEnv
source bin/activate
Missing '}'.

与在Ubuntu 22.04中激活virtualenv不同,source bin/activate会报错Missing ‘}’;
ls bin/activate*
bin/activate bin/activate.csh bin/activate.fish bin/activate.nu bin/activate.ps1 bin/activate_this.py
可以看到还有其他activate脚本,尝试activate.csh,成功:
source bin/activate.csh
(myEnv):~/myEnv #
安装Django框架
(myEnv):~/myEnv#pip install django
Collecting django
Obtaining dependency information for django from https://files.pythonhosted.org/packages/bf/8b/c38f2354b6093d9ba310a14b43a830fdf776edd60c2e25c7c5f4d23cc243/Django-4.2.5-py3-none-any.whl.metadata
Downloading Django-4.2.5-py3-none-any.whl.metadata (4.1 kB)
Collecting asgiref<4,>=3.6.0 (from django)
Obtaining dependency information for asgiref<4,>=3.6.0 from https://files.pythonhosted.org/packages/9b/80/b9051a4a07ad231558fcd8ffc89232711b4e618c15cb7a392a17384bbeef/asgiref-3.7.2-py3-none-any.whl.metadata
Downloading asgiref-3.7.2-py3-none-any.whl.metadata (9.2 kB)
Collecting sqlparse>=0.3.1 (from django)
Downloading sqlparse-0.4.4-py3-none-any.whl (41 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 41.2/41.2 kB 161.9 kB/s eta 0:00:00
Collecting typing-extensions>=4 (from asgiref<4,>=3.6.0->django)
Obtaining dependency information for typing-extensions>=4 from https://files.pythonhosted.org/packages/24/21/7d397a4b7934ff4028987914ac1044d3b7d52712f30e2ac7a2ae5bc86dd0/typing_extensions-4.8.0-py3-none-any.whl.metadata
Downloading typing_extensions-4.8.0-py3-none-any.whl.metadata (3.0 kB)
Downloading Django-4.2.5-py3-none-any.whl (8.0 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 8.0/8.0 MB 90.3 kB/s eta 0:00:00
Downloading asgiref-3.7.2-py3-none-any.whl (24 kB)
Downloading typing_extensions-4.8.0-py3-none-any.whl (31 kB)
Installing collected packages: typing-extensions, sqlparse, asgiref, django
Successfully installed asgiref-3.7.2 django-4.2.5 sqlparse-0.4.4 typing-extensions-4.8.0

检查Django版本
(myEnv) ~/myEnv#django-admin --version
4.2.5

实际创建一个MIS项目

参考《Django-Admin 4.2.4 on Ubuntu 22.04》

迁移Django-Admin项目

参考《Django-Admin 4.2.4 on Ubuntu 22.04》


Posted

in

by

Tags:

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *