我的问题是,当我将我的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) 我正在分发一个具有以下结构的包:
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模块,.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'按钮.
自从升级到subversion 1.7后,我在运行buildout时得到"无法识别的.svn/entries格式".我注意到针对此错误的分发和setuptools都有一个未解决的错误报告,似乎您也可以使用setuptools_subversion来解决此问题.
我无法找到的方法是安装setuptools_subversion,以便buildout选择它.请有人帮忙吗?
我试过了
有点跟进这个 ...... :)
我的项目只是Python 3,我的问题基本上是如何告诉distutils/distribute/who who this package是否仅限Python 3?
我有一个具有这种结构的项目:
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。关于上传此子文件夹有什么问题的任何提示?
我正在寻找类似于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.
几天前我已经为 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) 我有一个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界面显示了所有节点上正在运行的作业和分配的核心,控制台中也没有出现其他警告或错误.
我是 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 ×10
python ×7
setuptools ×5
apache-spark ×2
distutils ×2
pypi ×2
android ×1
buildout ×1
distribution ×1
django ×1
file ×1
gcc ×1
hadoop ×1
linux ×1
pytorch ×1
setup.py ×1
svn ×1