带有node.js类模块系统的python。
nodepy-runtime的Python项目详细描述
node.py
py是一个与cpython 2.7和3.3-3.6兼容的python运行时。 它为模块提供了一个独立但优越的导入机制, python应用程序的依赖性管理和易部署性 对于其他语言,没有virtualenvs。
Node.py is inspired by Node.js.
nppm是node.py的包管理器,允许您安装和管理 标准python包(在hood下使用pip)以及作为node.py 没有虚拟环境的朦胧的包。nppm是一个强大的 用于部署node.py应用程序和命令行工具的工具。你可以找到 nppm存储库here。
用法示例
py允许您使用module编写非常模块化的python应用程序
导入更容易跟踪的语义。它也没有
与标准python一样,独立的__main__
模块的概念。任何有效的
python脚本是一个有效的node.py脚本。
$ ls
app.py models.py nodepy.json
$ head app.py
import flask
import * from './models' # Node.py special syntax
require('werkzeug-reloader-patch').install() # Node.py require() function
app = flask.Flask('myapp')
# ...
$ cat nodepy.json
{
"name": "myapp",
"pip_dependencies": {
"Flask": ">=1.0.2",
"pony": ">=0.7.3"
},
"dependencies": {
"werkzeug-reloader-patch": "^0.0.7"
}
}
$ nppm install
$ nodepy app
... Starting Flask server at localhost:8000
安装
node.py可以从pypi获得nodepy-runtime
。python版本
将其安装到的python版本也将用于
node.py代码。
Tip: Add the
--user
flag if you don't want to install Node.py system-wide.
$ pip install nodepy-runtime
有多种方法可以安装nppm。建议的方法是
使用远程安装脚本。如果要安装特定版本,
将git ref作为参数传递(例如develop
或v2.0.2
)。如果你不知道
指定一个标记,将安装标记最高的版本。
$ nodepy https://nodepy.org/get-nppm.py
或者,可以克隆存储库并使用本地安装脚本。
$ git clone https://github.com/nodepy/nppm.git
$ nodepy nppm/scripts/install.py
Important: The installer is not able to automatically detect whether Node.py was installed system-wide or with the
--user
option. If you installed Node.py with the--user
option, pass the--global
option to the install-script (global meaning user-location). The default is to install with--root
(system-wide).
更改
v2.1.5(2018-08-18)
- 添加
Request.copy()
方法
v2.1.4(2018-08-13)
- 处理相关包链接(实际上已经在2.1.3中)
v2.1.3(2018-08-13)
- ^ ^
},不再替换现有后缀 当试图添加 .py
后缀时
v2.1.2(2018-06-15)
- 修复
MANIFEST.in
,现在包括requirements.txt
(由setup.py
所需)
v2.1.1(2018-06-14)
- v2.1.0的发布日期修补程序
v2.1.0(2018-06-14)
- 在
README.md
中将 - 将mit许可证添加到所有源文件的头中
nodepy-pm
重命名为nppm
v2.0.3(2018-06-03)
nodepy.base.Module()
构造函数现在只接受绝对文件名- 更新
setup.py
以包含标记long_description
并读取install 来自requirements.txt
的要求
v2.0.2(2018-03-30)
- 本地
.nodepy/pip
目录现在总是通过使用 使用EntryModule.run_with_exec_handler()
方法而不是加载 直接执行模块 PythonLoader.load()
如果路径已经是 在列表中
v2.0.1(2017-12-19)
PythonLoader._load_code()
现在默认使用utf8编码,但是我们 应该尝试查看文件是否包含编码:comment- 总是将本地
modules_directory
添加到上下文解析路径,这有助于 使用包链接的项目 - node.py repl现在还可以从
.nodepy/pip
目录导入 - 修复包根以外的
resolve_root
- 不要从
nodepy.utils.path
导入pathlib
,而是导入pathlib2
直接。我们决定不使用性病 可用,因为可能存在细微差异 - 将缺少的
strict=False
添加到UrlPath.resolve()
和ZipPath.resolve()
- 向
nodepy.runtime.scripts
添加信息,使其还可以保存args
成员 resolve_root
现在考虑默认值Package.main
,如果是 未显式定义,当需要包入口点时添加resolve_root
StdResolver.package_for_directory()
必须解析要消除的路径 pardir元素,否则我们可以得到两个指向 相同的目录,但其中一个目录包含subdir/..
元素- 更新
Module.name
属性以生成所需的modu姓名 对于包外部的模块resolve_root
- 修复了在
Request.try_()
中将requeststring与实际请求str进行比较的问题 正确提高tryresolveerror - 修复python 2的父调用
FrameDebugger
- 添加
Config.sections()
,删除Context.__init__()
中的调试打印 - 去掉
nodepy.default_context
,但添加nodepy.get_default_context()
代替 - 添加
nodepy.utils.config
模块并添加Context.config
成员 从NODEPY_CONFIG
文件或~/.nodepy/config
初始化
v2.0.0(2018-11-24)
- 完全重写
- 抽象模块解析接口
- 使用
pathlib2
模块抽象文件系统
版权所有©2018 Niklas Rosenstein