小编CGF*_*FoX的帖子

导入错误:没有模块...在 python setup.py install 之后

我在安装我的 Python 脚本之一时遇到问题。它具有以下结构:

myproject
  setup.py
  src
    myproject
      otherfolders
      main.py
      __init__.py
Run Code Online (Sandbox Code Playgroud)

setup.py创建了一个这样的入口点:

from setuptools import setup, find_packages

setup(name='mypackage',
version='2.4.0',
author='me',
author_email='...',
package_dir={'':'src'},
packages=find_packages('myproject'),
install_requires=[
    "networkx",
    "geopy",
    "pyyaml"
],
zip_safe=False,
entry_points={
    'console_scripts': [
        'myproject=myproject.main:main',
    ],
},
)
Run Code Online (Sandbox Code Playgroud)

现在,使用 成功安装后sudo python setup.py install,我运行mypackage并收到导入错误:No module named mypackage.main

我知道有很多类似的问题,我尝试了这里建议的大多数/所有解决方案,例如检查__init__.py和设置PYTHONPATH,但问题仍然存在。我在两台不同的 Ubuntu 16.04 机器上运行它。

我很确定这以前有效,但即使我回到较早的提交,它现在也不起作用。

我注意到安装可以使用,develop但仍然无法使用install. 这对任何人都有意义吗?

python installation setuptools python-import importerror

12
推荐指数
1
解决办法
9582
查看次数

PyCharm:自动对齐内嵌注释

我使用PyCharm 2016.2来编写我的Python程序.我的一些在线评论看起来有点过分:

code    # comment
code  # comment
more code  # comment
Run Code Online (Sandbox Code Playgroud)

有没有办法让PyCharm自动对齐垂直线上的部分或文件中的所有内嵌注释.所以它看起来像这样:

code       # comment
code       # comment
more code  # comment
Run Code Online (Sandbox Code Playgroud)

与此相关:我尝试手动完成,但PyCharm有时会混淆我的注释缩进,例如复制代码时.我怎么能改变呢?

comments indentation auto-indent pycharm

11
推荐指数
1
解决办法
546
查看次数

GitHub:Windows上两个帐户的单独凭据

我最近创建了第二个GitHub帐户,分别是我的工作和我的私人项目(之前,我只有工作帐户).我将https与Windows凭据存储结合使用.要自动选择正确的帐户,我会按照此处的建议存储我的私人帐户信息~/.gitconfig和工作帐户信息.~/work/.gitconfig

不幸的是,当我尝试在我的私有存储库中推送更改时,我收到以下错误:

$ git push
remote: Permission to privateuser/privaterepo.git denied to workuser.
fatal: unable to access 'https://privateuser@github.com/privateuser/privaterepo.git/': The requested URL returned error: 403
Run Code Online (Sandbox Code Playgroud)

我将远程URL设置为git remote set-url origin https://privateuser@github.com/privateuser/privaterepo.git类似于此处的建议.推进我的工作回购仍然工作正常.当我输入git config user.name我的私人/工作回购时,我分别得到我的私人/工作用户名 - 应该是这样.

新的私有存储库有什么问题?为什么git仍然认为我是workuser,当我试图推送到我的私人回购?它是否必须对Windows Credential存储执行某些操作,我用它来存储我的工作凭据?它从未要求我私人帐户的密码......

git push credentials github multiple-users

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

Apple M1 和其他设备上的 TensorFlow 的通用要求.txt

我有一台配备 Apple M1 芯片组的新 MacBook。要安装tensorflow,我按照此处的说明进行操作,即安装tensorflow-metalandtensorflow-macos而不是普通的tensorflow软件包。

虽然这工作正常,但这意味着我无法运行典型的,pip install -r requirements.txt只要我们tensorflowrequirements.txt. 如果我们改为包含tensorflow-macos,则会给非 M1 甚至非 macOS 用户带来问题。

我们的库必须在所有平台上运行。是否有一个通用安装命令可以根据计算机是否是 M1 Mac 来安装正确的 TensorFlow 版本?这样我们就可以为requirements.txt每个人使用一个单一的?

或者,如果这是不可能的,我们可以传递一些标志/选项,例如pip install -r requirements.txt --m1安装一些变体吗?这里最简单、最优雅的解决方案是什么?

python macos requirements.txt tensorflow apple-m1

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

Java:没有来自外部类的 ArrayList 修改

我在 Java 项目的一个类中使用了 ArrayList。该类跟踪列表是否已更改,并提供公共方法来添加和删除列表中的元素,自动将变量设置为“已更改”。

到目前为止,该列表是公开的,因为我希望我的列表可以在任何地方公开阅读。但我只希望拥有该列表的类能够修改它。所以没有来自外部类的修改。那可能吗?如果是这样,怎么办?

通常对于访问控制,您可能会使用 getter 和 setter 方法。但即使使用 getter 方法并将列表设置为私有,另一个类仍然可以这样做getList().remove(element),从而从外部修改列表,而该类不会注意到列表已更改。

java class arraylist runtimemodification

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

在 Docker 中运行的 Nginx 状态端点

我是 Nginx 的新手,我在 Docker 容器中运行它来为一个简单的网站提供服务。我想添加一个/health端点,它只返回状态 200 + 一些任意内容。

我复制并调整了标准nginx.conf,从/etc/nginx/通过增加

server {
    location /health {
        return 200 "alive";
    }
}
Run Code Online (Sandbox Code Playgroud)

http块内的底部。但是当我运行 Docker 并尝试访问时localhost/health,我只得到no such file or directory. 访问网站localhost工作正常。

我还尝试复制其他代码块,例如,这个:https : //gist.github.com/dhrrgn/8650077 但后来我得到conflicting server name "" on 0.0.0.0:80, ignored nginx: [warn] conflicting server name "" on 0.0.0.0:80, ignored.

我是不是把它location放在了里面的错误位置nginx.conf?我需要一些特殊的服务器配置吗?有什么问题?

nginx endpoint docker

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

错误,因为文件libmpi.so.1缺失

我正在使用Omnet ++和Veins进行模拟,它工作正常,直到我昨晚从Ubuntu 15升级到16.04 LTS.现在,我在尝试运行模拟时遇到以下错误:error while loading shared libraries: libmpi.so.1: cannot open shared object file: No such file or directory

我搜索了libmpi.so.1,似乎它不见了./ usr/lib/openmpi/lib中有一个文件libmpi.so和libmpi.so.12,但libmpi.so.1没有.我尝试卸载并重新安装软件包openmpi-bin,libopenmpi-dev以及我从网站上下载的OpenMPI.我还在bashrc和profile(在线推荐)中设置变量export LD_LIBRARY_PATH:=$PATH:/usr/lib/openmpi/lib/

这些方法都没有奏效,我仍然得到同样的错误.有关如何修复它以及如何获取文件libmpi.so.1的任何建议?

install runtime-error openmpi

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

PyTest:自动删除使用 tmpdir_factory 创建的临时目录

我正在尝试使用tmpdir_factory类似于教程的PyTest 为模块中的所有测试创建一个具有特定名称(例如“数据”)的临时目录:

@pytest.fixture(scope='module')
def project_file(self, tmpdir_factory):
    return tmpdir_factory.mktemp("data")
Run Code Online (Sandbox Code Playgroud)

我在模块内的一些测试中成功使用了临时目录。但是,运行测试后该目录仍然存在,当我再次运行它们时,我会失败,因为我无法创建名为“data”的新临时目录。

pytest测试完成后如何自动删除临时目录“data”?该tmpdir参数创建被删除的临时目录,但它没有名称并且只有函数作用域。

python testing temporary-files pytest

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

Java:使用>,<和==比较对象

是否有可能适当地比较使用运营商的对象>,<==在Java中?我Comparable在我的一个对象中实现了接口.

它可以节省一些时间并且很好写

if (obj1 < obj2) do sth
Run Code Online (Sandbox Code Playgroud)

代替

if (obj1.compareTo(obj2) < 0) do sth
Run Code Online (Sandbox Code Playgroud)

如果我实现其他东西或通常不能像这样工作,那可能吗?

java object comparable

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

Ansible:创建新用户并从本地系统复制 ssh-keys

我是 Ansible 的新手,我正在努力在远程机器上创建一个新用户并将 ssh 密钥(用于 git)从本地机器复制到远程机器的新用户。基本上,从localmachine/somepath/keys/remotemachine/newuser/home/.ssh/

到目前为止,我尝试过:

- name: Create user
  hosts: remote_host
  remote_user: root
  tasks:
    - name: Create new user
      user: name=newuser ssh_key_file=../keys/newuser
Run Code Online (Sandbox Code Playgroud)

虽然这会在远程机器上创建新用户,但它不会复制任何密钥(.ssh 仍然是空的)。我也尝试过authorized_key作为第二个任务,但在尝试复制私钥时只收到一条错误消息。

在我已经运行它并且newuser已经存在之后,甚至有可能仍然添加密钥。即,我可以再次运行它还是必须先删除新用户?

ssh-keys ansible

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

Matplotlib ArtistAnimation:在每个步骤中绘制整个图形

我有一个用于绘图的现有函数,我在程序中重复调用该函数。我想使用matplotlib'sArtistAnimation将每个情节保存为动画的一个步骤中显示的“艺术家”。

我知道如何使用ArtistAnimation动画来显示情节的各个元素,但不知道整个情节。

这是一个简化的示例:

import random

def my_plot():
    fig, ax = plt.subplots()
    ax.plot([random.randrange(10), random.randrange(10)], [random.randrange(10), random.randrange(10)])
    ax.plot([random.randrange(10), random.randrange(10)], [random.randrange(10), random.randrange(10)])
    plt.show()
    return ax

ims = []
fig = plt.figure()
for _ in range(5):
    ax = my_plot()
    ims.append((ax,))
ani = animation.ArtistAnimation(fig, ims, repeat=False)
ani.save('im.mp4', metadata={'artist':'Guido'})
Run Code Online (Sandbox Code Playgroud)

运行时没有错误,但生成的视频只是空白。如果我返回 所创建的艺术家列表,也会发生同样的情况ax.plot()

我认为问题是我多次调用plt.figure/ 。plt.subfigure但我不知道如何避免这种情况。我是否需要预先创建一个数字并将其传递给 的每次调用my_plot?好像有点丑啊

python plot animation matplotlib

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