小编Pla*_*ong的帖子

Python Setuptools:添加脚本的快速方法,无需“main”函数作为“console_scripts”入口点

我的请求看起来很不正统,但我想快速打包一个旧的存储库,主要由 python 可执行脚本组成。

问题在于这些脚本没有被设计为模块,因此其中一些脚本直接在模块顶层执行代码,而另一些脚本则具有该部分if __name__=='__main__'

您将如何使用 setuptools 分发这些脚本而不需要太多重写?

  • 我知道我可以将它们放在scripts的选项下setup(),但不建议这样做,而且它也不允许我重命名它们。
  • 我想跳过main()在所有这些脚本中定义函数,也是因为有些脚本调用奇怪的递归函数,对全局变量有副作用,所以我有点害怕破坏东西。
  • 当我尝试仅提供模块名称作为console_scripts(例如,"myscript=mypkg.myscript"而不是"myscript=mypkg.myscript:main")时,它在安装后逻辑上抱怨模块不可调用。

有没有办法从模块创建脚本?至少当他们有一个if __name__=='__main__'

python program-entry-point setuptools entry-point

7
推荐指数
1
解决办法
1447
查看次数

Python setuptools:打包根目录(每个包不需要子目录)

我需要将一个包写入存储库,但它是一个小型快速包,因此我认为不需要将文件放入子目录中。我只是想要:

import mypkg.module1
Run Code Online (Sandbox Code Playgroud)

具有目录结构

root_folder/
    - setup.py
    - __init__.py  # the init for package "mypkg" (empty)
    - module1.py
Run Code Online (Sandbox Code Playgroud)

我不想被限制增加文件夹层次结构,如下所示:

root_folder/
    - setup.py
    - __init__.py  # the init for package "mypkg" (empty)
    - module1.py
Run Code Online (Sandbox Code Playgroud)
root_folder/
    - setup.py
    - mypkg/  # WHY would I do that for 1 module??
        - __init__.py
        - module1.py
Run Code Online (Sandbox Code Playgroud)

但结果是,import mypkg失败了,并且import module1工作了,而不是期望的import mypkg.module1

我发现了这个问题,但“只需将 setup.py 向上移动一个文件夹”的答案不适合我。

在此处找到设置参数文档后,我尝试定义一个命名空间包:

# Content of setup.py
from setuptools import setup

setup(name='MyPkg',
      packages=['mypkg'] …
Run Code Online (Sandbox Code Playgroud)

python setuptools python-packaging

6
推荐指数
1
解决办法
3633
查看次数

Jupyter:如何列出正在运行的内核以及哪个笔记本启动了它们?

我还没有在 github 或 jupyter 帮助中找到答案。

TL;DR:我需要一个命令行来告诉我与魔法相同的事情%connect_info,特别是 line Connect with --existing kernel-4e4c970e-cccb-2485-a09d-d56efd10e278.json

我当前的设置是从工作服务器启动 jupyter 笔记本。然后我使用 SSH 连接到该服务器,并且可以通过附加控制台在同一内核中工作:

jupyter console --existing kernel-4e4c970e-cccb-2485-a09d-d56efd10e278.json
Run Code Online (Sandbox Code Playgroud)

(在tmux++设置中,顺便说一句,我经常发现这更方便)vimslimux

问题是:

  1. 获取内核字符串的唯一方法是从笔记本本身(可能很难通过 SSH 访问);
  2. 我有几台笔记本正在运行,有时我需要快速检查我需要哪一台。

那么是否有一个命令可以从服务器上的 shell 运行,该命令会列出正在运行的内核哪个笔记本启动了它们,以及理想情况下是否附加了控制台

ssh remote-server jupyter jupyter-notebook jupyter-console

5
推荐指数
1
解决办法
3838
查看次数

解释这个 sed 条件分支行为

我有以下 (gnu)sed脚本,用于解析另一个 sed 脚本,并在单独的行上输出不同的命令。

换句话说,这个脚本应该在每个分号后放置一个换行符;,匹配或替换命令中的分号除外。

Sed 脚本

#!/bin/sed -rf

# IDEA:
# replace ';' by ';\n' except when it's inside a match expression or subst. expression.

# Ignored patterns:
/^#/b   # commented lines
/^$/b   # empty lines
# anything in a single line, without semicolon except at the end
/^[^\n;]*;?$/b

# Processed patterns (put on separate lines):
# Any match preceding a semicolon, or the end of the line, or a substitution
s_/^[^/]+/[^;s]*;?_&\n_;      t printtopline …
Run Code Online (Sandbox Code Playgroud)

sed

4
推荐指数
1
解决办法
962
查看次数

github 页面的自定义“用户名”,但不是自定义域

我决定使用github pages建立一个小博客。我已经有一个 github 帐户,有一些用户名,但我不希望我的博客是myusername.github.io,我宁愿myblogname.github.io......

原因是我想要一些最小的自定义,但不需要为自定义域付费。

是否可以(无需更改我的用户名)?

github-pages

3
推荐指数
1
解决办法
935
查看次数