标签: python3

python命令启动了错误版本的python解释器

我使用的是 Mac OS X 版本 10.13.1,我刚刚安装了 anaconda。我已经使用命令创建了一个虚拟环境

conda create -n py3 python=3
Run Code Online (Sandbox Code Playgroud)

然后,我使用命令启动了 python 解释器

python
Run Code Online (Sandbox Code Playgroud)

令我惊讶的是,来自 /usr/bin 的预装 python 2.7 出现了,而不是 python 3.6。为了检查出了什么问题,我发出了命令

which python
Run Code Online (Sandbox Code Playgroud)

结果更令人惊讶,我得到了以下信息:

/Users/karlstroetmann/anaconda2/envs/py3/bin/python
Run Code Online (Sandbox Code Playgroud)

当我然后调用命令时

/Users/karldrstroetmann/anaconda2/envs/py3/bin/python
Run Code Online (Sandbox Code Playgroud)

我确实得到了 python 3.6.3。但我不明白为什么我不能通过键入python. 我在这里缺少什么?任何提示将不胜感激。

python python3

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

“ModuleNotFoundError: No module named 'apt_pkg'”出现在各种命令中

我在各种情况下都会收到以下错误,例如当我尝试启动未安装的软件包时:

   $ tldr
    Traceback (most recent call last):
      File "/usr/lib/command-not-found", line 28, in <module>
        from CommandNotFound import CommandNotFound
      File "/usr/lib/python3/dist-packages/CommandNotFound/CommandNotFound.py", line 19, in <module>
        from CommandNotFound.db.db import SqliteDatabase
      File "/usr/lib/python3/dist-packages/CommandNotFound/db/db.py", line 5, in <module>

    import apt_pkg
ModuleNotFoundError: No module named 'apt_pkg'
Error in sys.excepthook:
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/apport_python_hook.py", line 63, in apport_excepthook
    from apport.fileutils import likely_packaged, get_recent_crashes
  File "/usr/lib/python3/dist-packages/apport/__init__.py", line 5, in <module>
    from apport.report import Report
  File "/usr/lib/python3/dist-packages/apport/report.py", line 30, in <module>
    import apport.fileutils
  File "/usr/lib/python3/dist-packages/apport/fileutils.py", …
Run Code Online (Sandbox Code Playgroud)

kde python python3 kde5

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

python 脚本无法在 systemd 的屏幕中启动。没有错误

我写了一个 python 脚本,我想在屏幕内启动

screen -d -m /usr/bin/python3 /home/kermit/active-climateMngr.py
Run Code Online (Sandbox Code Playgroud)

它在命令行上工作得很好,但是当我尝试在 systemd 作为服务启动它时,没有任何屏幕会话启动。

.服务配置:

[Unit]
Description=Test Service
After=multi-user.target
Conflicts=getty@tty1.service

[Service]
Type=simple
ExecStart=/usr/bin/screen -d -m /usr/bin/python3 /home/kermit/active-climateMngr.py
StandardInput=tty-force

[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)

系统:

kermit@minnow:~ $ sudo service active-climateMngr.py status
? active-climateMngr.py.service - Test Service
   Loaded: loaded (/lib/systemd/system/active-climateMngr.py.service; enabled; vendor preset: enabled)
   Active: inactive (dead) since Sat 2021-02-20 08:58:46 CST; 4min 7s ago
  Process: 14373 ExecStart=/usr/bin/screen -d -m /usr/bin/python3 /home/kermit/active-climateMngr.py (code=exited, status=0/SUCCESS)
 Main PID: 14373 (code=exited, status=0/SUCCESS)

Feb 20 08:58:46 minnow.coinz.com systemd[1]: Started Test Service.
Feb …
Run Code Online (Sandbox Code Playgroud)

python systemd services python3

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

更新 CentOS 7 上 Python 3 使用的 SQLite 版本

我已经在 Centos 7.4 机器上安装了 Python 3.6,并且需要 SQLite 的更新版本(我正在使用一些新功能)。它附带的 SQLite 版本非常旧:3.7.17。

这是怎么做到的?在 Windows 上,将 Python\DLLs 目录中的 sqlite.dll 文件替换为所需的文件很简单,但我没有找到如何在 Linux 上执行此操作的信息。

我可以看到这个问题之前有人问过,但没有回答 - /sf/ask/2734513071/ - 这是我唯一的页面谷歌搜索;大多数其他结果是 Python 2/pysqlite,这对我没有帮助。

那么,如何在 CentOS 机器上更新 Python 使用的 SQLite 版本呢?

centos python software-installation sqlite python3

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

如何使`python`在Debian系统范围内成为`python3`的别名

我的 Debian 测试系统的最新更新删除了 Python 版本 2,我只安装了 Python 3,带有python3. 不再有任何名为python. 这会导致多个脚本失败,包括与 Python 3 兼容的脚本。

我很想知道什么是全局配置pythonpython3.

一种肮脏的解决方案是手动执行类似的操作sudo ln -s /usr/bin/python{3,},但我担心这对未来的 APT 更新(或者如果稍后重新安装 Python 2)可能不健壮。另一种选择是设置别名,但它只适用于我的用户,而不适用于整个系统。

我还注意到,在 Ubuntu 上有一个软件包python-is-python3可以做到这一点,但在 Debian 上没有这样的软件包。

debian alias python python3

3
推荐指数
2
解决办法
1859
查看次数

如何使用python代码通过互联网唤醒局域网?

我的家庭网络图很简单,如下所示:

internet       --> Optical modem --> router      --> pc1 ,pc2
111.111.111.111--> 192.168.1.1   -->192.168.31.1 --> 192.168.31.144,192.168.31.173
Run Code Online (Sandbox Code Playgroud)

ISP提供一个静态ip,假设它是111.111.111.111,光调制解调器的ip地址是192.168.1.1,路由器的ip地址是192.168.31.1,pc1的ip地址是,pc2的192.168.31.144ip地址是192.168.31.173,pc1的mac地址xx.xx.xx.xx

openwrt是我的路由器上运行,将在路由器和防火墙开放某个端口转发规则:

forwarding rule
name        protocl       outer port    inner IP address   inner port 
wakeonwan   UDP           9             192.168.31.144      9
ssh         TCP and UDP   10000         192.168.31.1        22
Run Code Online (Sandbox Code Playgroud)

并在openwrt中绑定ip地址和mac:

ip address               mac               interface
192.168.31.144           xx.xx.xx.xx       ??
Run Code Online (Sandbox Code Playgroud)

从以下选项中选择哪个界面?

在此处输入图片说明

远程登录我的路由器:

ssh root@111.111.111.111 -p 10000
Run Code Online (Sandbox Code Playgroud)

从路由器发出 wol 命令:

/usr/bin/wol -i 192.168.31.255 xx.xx.xx.xx
Run Code Online (Sandbox Code Playgroud)

pc1 可以从路由器唤醒!
关闭 pc1,使用以下 python …

openwrt wake-on-lan router python3

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

在 RHEL8 上,如何使用“alternatives”选择已列出的版本作为使用的版本

在 RHEL 8.3 系统上,我安装了两个 python3 版本,当我列出替代版本时,它们显示为版本:

$ alternatives --display python3

/usr/bin/python3.6 - priority 1000000
 slave easy_install-3: /usr/bin/easy_install-3.6
 slave pip-3: /usr/bin/pip-3.6
 slave pip3: /usr/bin/pip3.6
 slave pydoc-3: /usr/bin/pydoc3.6
 slave pydoc3: /usr/bin/pydoc3.6
 slave pyvenv-3: /usr/bin/pyvenv-3.6
 slave python3-man: /usr/share/man/man1/python3.6.1.gz
/usr/bin/python3.9 - priority 3900
 slave easy_install-3: /usr/bin/easy_install-3.9
 slave pip-3: /usr/bin/pip-3.9
 slave pip3: /usr/bin/pip3.9
 slave pydoc-3: /usr/bin/pydoc3.9
 slave pydoc3: /usr/bin/pydoc3.9
 slave pyvenv-3: (null)
 slave python3-man: /usr/share/man/man1/python3.9.1.gz
Current `best' version is /usr/bin/python3.6.
Run Code Online (Sandbox Code Playgroud)

如何使用该alternatives命令选择已列出的python3.9已使用版本?python3.9(即,当我在命令行上键入时,我想在系统范围内执行python3)。

注意:我知道我可以添加一个版本alternatives --install …

rhel alternatives python3

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

在 Ubuntu 18.04 上安装 Python 3.7 需要哪些库

尝试在 Ubuntu 18.04 上安装 python 3.7 时

我收到如下错误消息:

zipimport.ZipImportError: 无法解压数据;zlib 不可用

或者

ModuleNotFoundError: 没有名为“_ctypes”的模块

或者

~/.pyenv/plugins/python-build/bin/python-build: line 775: make: command not found

或者

配置:错误:在 $PATH 中找不到可接受的 C 编译器

compiling ubuntu dependencies software-installation python3

2
推荐指数
1
解决办法
3411
查看次数

Autokey - 如果正在运行则聚焦应用程序窗口,如果没有则启动应用程序

pcmanfm我正在尝试获取这样的processID :

pgrep -f "pcmanfm"
Run Code Online (Sandbox Code Playgroud)

pcmanfm不运行时,上面的命令不会返回任何内容(正如我所期望的那样)。

但是,当我从 python 运行命令时,即使pcmanfm未运行,它也会返回进程 ID:

processID = os.system('pgrep -f "pcmanfm"')
Run Code Online (Sandbox Code Playgroud)

此外,如果您在 python3 提示符下多次运行上述命令,它每次都会返回不同的 processID。一直以来,pcmanfm在这些命令之前已经关闭。

>>> processID = os.system('pgrep -f "pcmanfm"')
17412
>>> processID = os.system('pgrep -f "pcmanfm"')
17414
>>> processID = os.system('pgrep -f "pcmanfm"')
17416
Run Code Online (Sandbox Code Playgroud)

pcmanfm如果它当前没有运行,这确实会扰乱我的启动能力。我的脚本认为它正在运行,但实际上它没有运行。

为什么会发生这种情况?

实际上,我在尝试根据我观看的视频编写的自动键脚本中遇到了这个问题。这是我当前的脚本:

processID = system.exec_command('pgrep -f "pcmanfm" | head -1',True)
dialog.info_dialog("info",processID)

if (processID):
    cmd = "wmctrl -lp | grep " + processID + " | awk '{print $1}'" …
Run Code Online (Sandbox Code Playgroud)

bash process-management python3 pgrep autokey

2
推荐指数
1
解决办法
966
查看次数

在数字前面添加零

我有一个如下所示的文件,是用 Python 计算的:

1.00000100e+07  
1.00000000e+04  
1.11000111e+08  
1.11000000e+05
Run Code Online (Sandbox Code Playgroud)

现在,我想获得这样的东西:

010000010  
000010000  
111000111  
000111000  
Run Code Online (Sandbox Code Playgroud)

我的想法是添加零以获得 9 位的固定格式。我编写的 Python 代码为我提供了二进制数,但为了进一步解码,我需要这些二进制数有 9 位。我尝试从 Python 中以所需的格式获取它们,但我无法做到这一点。

我希望我的解释很清楚。

更新:
Python代码:

#!/usr/bin/env python3  

import numpy as np  
from numpy import genfromtxt  
import os  

day = os.environ.get('day')  
Array = genfromtxt("SUC_diffzeros_"+str(day)+".csv")  
final = np.zeros(len(Array))
    
def decimaltobinary(x):

    for i in range(len(x)):
        
        print(x[i])
        final[i] = "{0:09b}".format(x[i])
        print(final)
    var = np.column_stack([Array, final])
    np.savetxt("SUC_diffzeros_"+str(day)+".csv", var, fmt='%.8e')

if __name__ == '__main__':
    val = Array.astype(int)
    decimaltobinary(val)
Run Code Online (Sandbox Code Playgroud)

text-processing python3

2
推荐指数
1
解决办法
601
查看次数