标签: distribute

从PyPI安装我的sdist会将文件放在意想不到的位置

我的问题是,当我将我的Python包上传到PyPI,然后使用pip从那里安装它时,我的应用程序中断,因为它将我的文件安装到完全不同的位置,而不是我从本地sdist安装完全相同的包.

从本地sdist安装将文件放在我的系统上,如下所示:

/Python27/
  Lib/
    site-packages/
      gloopy-0.1.alpha-py2.7.egg/ (egg and install info files)
        data/ (images and shader source)
        doc/ (html)
        examples/ (.py scripts that use the library)
        gloopy/ (source)
Run Code Online (Sandbox Code Playgroud)

这就像我期望的那样,并且运行正常(例如我的源代码可以找到我的数据目录,因为它们彼此相邻,就像它们在开发中一样.)

如果我将相同的sdist上传到PyPI,然后使用pip从那里安装它,那么事情看起来非常不同:

/Python27/
  data/ (images and shader source)
  doc/ (html)
  Lib/
    site-packages/
      gloopy-0.1.alpha-py2.7.egg/ (egg and install info files)
      gloopy/ (source files)
  examples/ (.py scripts that use the library)
Run Code Online (Sandbox Code Playgroud)

这根本不起作用 - 我的应用程序无法找到它的数据文件,加上显然它是一团糟,用我所有的垃圾污染顶级/ python27目录.

我究竟做错了什么?如何使pip安装表现得像本地sdist安装?这甚至是我应该努力实现的目标吗?

细节

我安装了setuptools,也分发了,我正在调用distribute_setup.use_setuptools()

WindowsXP,Python2.7.

我的开发目录如下所示:

/gloopy
  /data (image files and GLSL shader souce read at runtime)
  /doc (html files)
  /examples (some …
Run Code Online (Sandbox Code Playgroud)

python distutils setuptools distribute pypi

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

在Python distutils中从setup.py中查找脚本目录的正确方法?

我正在分发一个具有以下结构的包:

mymodule:
  mymodule/__init__.py
  mymodule/code.py
  scripts/script1.py
  scripts/script2.py
Run Code Online (Sandbox Code Playgroud)

mymodule的子目录mymodule包含代码和scripts子目录包含的脚本,应该是由用户执行.

在描述包安装时setup.py,我使用:

scripts=['myscripts/script1.py']
Run Code Online (Sandbox Code Playgroud)

指定脚本的位置.在安装过程中,它们通常会进入某个平台/用户特定bin目录.我所拥有的代码mymodule/mymodule需要调用脚本.然后找到这些脚本的完整路径的正确方法是什么?理想情况下,它们应该在用户的路径上,所以如果我想从shell调用它们,我应该能够做到:

os.system('script1.py args')
Run Code Online (Sandbox Code Playgroud)

但我希望通过其绝对路径调用脚本,而不是依赖于平台特定的bin目录PATH,如:

# get the directory where the scripts reside in current installation
scripts_dir = get_scripts_dir()
script1_path = os.path.join(scripts_dir, "script1.py")
os.system("%s args" %(script1_path))
Run Code Online (Sandbox Code Playgroud)

如何才能做到这一点?谢谢.

编辑删除脚本之外的代码对我来说不是一个实用的解决方案.原因是我将作业分配到一个集群系统,而我通常这样做的方式是这样的:假设你有一组你想要运行的任务.我有一个脚本,它将所有任务作为输入,然后调用另一个脚本,该脚本仅在给定任务上运行.就像是:

main.py:
for task in tasks:
  cmd = "python script.py %s" %(task)
  execute_on_system(cmd)
Run Code Online (Sandbox Code Playgroud)

所以main.py需要知道它在哪里script.py,因为它需要是一个可执行的命令execute_on_system.

python distutils setuptools distribute setup.py

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

无人参与安装python模块.exe文件

我正在寻找一种方法来安装一堆python模块,.exe格式如下:

ipython-0.13.1.py2-win32-PROPER.exe
scipy-0.12.0b1.win32-py2.7.exe
numpy-MKL-1.7.0.win32-py2.7.exe
pywin32-218.win32-py2.7.exe
Run Code Online (Sandbox Code Playgroud)

我可以通过distribute从命令行安装和调用pip 来安装其他模块,但我想知道我是否可以自动安装.exe文件 - 这样用户就不必点击'next''okay'按钮.

python distribute

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

使用buildout的"无法识别的.svn/entries格式"

自从升级到subversion 1.7后,我在运行buildout时得到"无法识别的.svn/entries格式".我注意到针对此错误的分发和setuptools都有一个未解决的错误报告,似乎您也可以使用setuptools_subversion来解决此问题.

我无法找到的方法是安装setuptools_subversion,以便buildout选择它.请有人帮忙吗?

我试过了

  • 下载并运行python setup.py install
  • 将它添加到我的buildout配置的[buildout]部分的egg列表中

python svn setuptools buildout distribute

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

Distribute/distutils指定Python版本

有点跟进这个 ...... :)

我的项目只是Python 3,我的问题基本上是如何告诉distutils/distribute/who who this package是否仅限Python 3?

python distribution setuptools distribute

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

如何在我的项目分发中包含包子文件夹?

我有一个具有这种结构的项目:

SomeProject/
    bin/
    CHANGES.txt
    docs/
    LICENSE.txt
    MANIFEST.in
    README.txt
    setup.py
    someproject/
        __init__.py
        location.py
        utils.py
        static/
            javascript/
                somescript.js
Run Code Online (Sandbox Code Playgroud)

和一个“setup.py”如下:

#!/usr/bin/env python

import someproject
from os.path import exists
try:
    from setuptools import setup, find_packages
except ImportError:
    from distutils.core import setup, find_packages

setup(
    name='django-some-project',
    version=someproject.__version__,
    maintainer='Some maintainer',
    maintainer_email='some@manteiner.com',
    packages=find_packages(),
    include_package_data=True,
    scripts=[],
    url='https://github.com/xxx/some-project',
    license='LICENSE',
    description='Some project description.',
    long_description=open('README.markdown').read() if exists("README.markdown") else "",
    install_requires=[
        "Django >= 1.4.0"
    ],
)
Run Code Online (Sandbox Code Playgroud)

然后,当我使用命令上传它时:

python setup.py sdist upload
Run Code Online (Sandbox Code Playgroud)

看起来没问题,但是包中没有包含此“javascript”子文件夹的“静态”文件夹。我的“setup.py”灵感来自具有类似结构的 github.com/maraujop/django-crispy-forms。关于上传此子文件夹有什么问题的任何提示?

python django setuptools distribute pypi

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

Spark中的Hadoop DistributedCache功能

我正在寻找类似于Spark中Hadoop的分布式缓存的功能.我需要一个相对较小的数据文件(带有一些索引值)才能存在于所有节点中以进行一些计算.是否有任何方法可以在Spark中实现这一点?

到目前为止,我的解决方法是将索引文件作为正常处理进行分发和缩减,在我的应用程序中大约需要10秒.之后,我将文件持久化,指示它为广播变量,如下所示:

JavaRDD<String> indexFile = ctx.textFile("s3n://mybucket/input/indexFile.txt",1);
ArrayList<String> localIndex = (ArrayList<String>) indexFile.collect();    

final Broadcast<ArrayList<String>> globalIndex = ctx.broadcast(indexVar);
Run Code Online (Sandbox Code Playgroud)

这使程序能够理解变量globalIndex包含的内容.到目前为止它是一个可能适合我的补丁,但我认为它不是最好的解决方案.对于相当大的数据集或大量变量,它仍然有效吗?

注意:我正在使用位于多个EC2实例的独立群集上运行的Spark 1.0.0.

hadoop distributed-cache distribute apache-spark

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

配置:错误:在 Linux Ubuntu 上为 Android 编译 python 时,C 编译器无法创建可执行文件

几天前我已经为 android 文件夹创建了 pyton,但忘记包含一些模块。所以我只是想再做一次......

这是 ./distribute.sh 的结果

Python build finished, but the necessary bits to build these modules were not found:
_bsddb             _curses            _curses_panel   
_sqlite3           _ssl               _tkinter        
bsddb185           bz2                dbm             
gdbm               linuxaudiodev      ossaudiodev     
sunaudiodev                                           
To find the necessary bits, look in setup.py in detect_modules() for the module's name.


Failed to build these modules:
readline                                              

Call build_python
Entering in ARM environment
Compiler found at /home/pawel/.buildozer/android/platform/android-ndk-r9c//toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86/bin//arm-linux-androideabi-gcc
configure: WARNING: if you wanted to set the --build type, don't use --host.
    If a cross …
Run Code Online (Sandbox Code Playgroud)

python linux android gcc distribute

6
推荐指数
0
解决办法
3060
查看次数

为什么"sc.addFile"和"spark-submit --files"没有向所有工作人员分发本地文件?

我有一个csv文件"test.csv",我试图复制到群集上的所有节点.

我有一个4节点的apache-spark 1.5.2独立集群.有4个工人,其中一个节点也有主要/驱动程序以及工作人员.

如果我跑:

$SPARK_HOME/bin/pyspark --files=./test.csv 或者从REPL接口内执行 sc.addFile('file://' + '/local/path/to/test.csv')

我看到火花日志如下:

16/05/05 15:26:08 INFO Utils: Copying /local/path/to/test.csv to /tmp/spark-5dd7fc83-a3ef-4965-95ba-1b62955fb35b/userFiles-a4cb1723-e118-4f0b-9f26-04be39e5e28d/test.csv
16/05/05 15:26:08 INFO SparkContext: Added file file:/local/path/to/test.csv at http://192.168.1.4:39578/files/test.csv with timestamp 1462461968158
Run Code Online (Sandbox Code Playgroud)

在主/驱动程序节点的单独窗口中,我可以使用ls轻松找到文件,即(ls -al /tmp/spark-5dd7fc83-a3ef-4965-95ba-1b62955fb35b/userFiles-a4cb1723-e118-4f0b-9f26-04be39e5e28d/test.csv).

但是,如果我登录到工作者,则没有文件,/tmp/spark-5dd7fc83-a3ef-4965-95ba-1b62955fb35b/userFiles-a4cb1723-e118-4f0b-9f26-04be39e5e28d/test.csv甚至没有文件夹/tmp/spark-5dd7fc83-a3ef-4965-95ba-1b62955fb35b

但是apache spark web界面显示了所有节点上正在运行的作业和分配的核心,控制台中也没有出现其他警告或错误.

file cluster-computing distribute apache-spark

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

pytorch - 如何从 DistributedDataParallel 学习中保存和加载模型

我是 Pytorch DstributedDataParallel() 的新手,但我发现大多数教程在训练期间都保存了本地 rank 0模型。这意味着如果我得到 3 台机器,每台机器上都有 4 个 GPU,那么最终我会得到 3 个模型,这些模型可以从每台机器上节省下来。

例如在第 252 行的pytorch ImageNet教程中:

if not args.multiprocessing_distributed or (args.multiprocessing_distributed
                and args.rank % ngpus_per_node == 0):
            save_checkpoint({...})
Run Code Online (Sandbox Code Playgroud)

如果 ,他们会保存模型rank % ngpus_per_node == 0

据我所知,DistributedDataParallel() 会自动做所有减少后端的损失,不需要做任何进一步的工作,每个进程都可以基于此自动同步损失。每个流程上的所有模型只会在流程结束时略有不同。这意味着我们只需要保存一个模型就足够了。

那么为什么我们不只是将模型保存在 上rank == 0,但是rank % ngpus_per_node == 0呢?

如果我有多个模型,我应该使用哪个模型?

如果这是在分布式学习中保存模型的正确方法,我应该合并它们,使用其中之一,还是基于所有三个模型推断结果?

如果我错了,请告诉我。

distribute pytorch

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