小编cyb*_*ast的帖子

subprocess.Popen()在Eclipse/PyCharm和终端执行之间具有不一致的行为

我遇到的问题是Eclipse/PyCharm解释子进程的Popen()的结果与标准终端不同.所有都在OSX上使用python2.6.1.

这是一个简单的示例脚本:

import subprocess

args = ["/usr/bin/which", "git"]
print "Will execute %s" % " ".join(args)
try:
  p = subprocess.Popen(["/usr/bin/which", "git"], shell=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
  # tuple of StdOut, StdErr is the responses, so ..
  ret = p.communicate()
  if ret[0] == '' and ret[1] <> '':
    msg = "cmd %s failed: %s" % (fullcmd, ret[1])
    if fail_on_error:
      raise NameError(msg)
except OSError, e:
  print >>sys.stderr, "Execution failed:", e
Run Code Online (Sandbox Code Playgroud)

使用标准终端,线路:

ret = p.communicate()
Run Code Online (Sandbox Code Playgroud)

给我:

(Pdb) print ret
('/usr/local/bin/git\n', '')
Run Code Online (Sandbox Code Playgroud)

Eclipse和PyCharm给了我一个空元组:

ret = {tuple} ('','') …
Run Code Online (Sandbox Code Playgroud)

python eclipse subprocess popen pycharm

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

mxmlc和框架链接 - 如何将链接指定为rsl

我正在尝试使用ant构建我的flex 4项目.在Flash Builder 4中,在项目属性中,可以将"框架链接"设置为"合并到代码","运行时共享库​​(RSL)"或"使用SDK默认(运行时共享库​​)"之一.如何在build.xml中将等效项设置为mxmlc选项?

我当前的build.xml如下所示:

<target name="myapp">
    <mxmlc 
        file="${PROJECT_ROOT}/myapp.mxml" 
        output="${DEPLOY_DIR}/myapp.swf"
        actionscript-file-encoding="UTF-8"
        keep-generated-actionscript="false"
        warnings="false" optimize="true" incremental="false" >

        <load-config filename="${FLEX_HOME}/frameworks/flex-config.xml"/> 

        <source-path path-element="${FLEX_FRAMEWORKS}"/> 

        <compiler.debug>true</compiler.debug>

        <runtime-shared-library-path path-element="${FLEX_FRAMEWORKS}/libs/framework.swc">
            <url rsl-url="framework_4.0.0.14159.swz"/>
            <url rsl-url="framework_4.0.0.14159.swf"/>
        </runtime-shared-library-path>                       

        <compiler.source-path path-element="src"/>

        <!-- List of external libraries -->
        <compiler.source-path path-element="${MY_LIB}/src" />

        <!-- List of SWC files or directories that contain SWC files. -->
        <compiler.library-path dir="libs" append="true">
            <include name="*.swc" />
        </compiler.library-path>

        <copy todir="${DEPLOY_DIR}" file="${FLEX_FRAMEWORKS}/rsls/framework_4.0.0.14159.swz"/>
        <copy todir="${DEPLOY_DIR}" file="${FLEX_FRAMEWORKS}/rsls/framework_4.0.0.14159.swf"/>

    </mxmlc>
</target>
Run Code Online (Sandbox Code Playgroud)

我假设设置runtime-shared-library-path指令并将框架swf,swz文件复制到我的目标文件夹会使事情有效,但事实并非如此.

我评估这是否有效的方式如下:我使用自定义预加载器,为了工作,我需要将框架链接作为RSL.使用"合并到代码",我的预加载器卡在某一点,并没有进展到我的应用程序SWF.这与我在使用上面的build.xml时看到的行为相同,这让我觉得SWF正在构建时将框架链接合并到代码中(而不是RSL链接).

与此相关的问题是如何确定我的swf是否使用RSL.我想我可以看一下编译输出的大小.但似乎应该有一种方法来判断我是否正在使用外部框架文件,或者在我不知情的情况下将其捆绑到SWF中.

ant mxmlc rsls flex4

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

即使存储库存在于 git_data_dirs 路径中,Gitlab 也会返回“No Repository”

概括

备份和迁移后,某些存储库在 Web 控制台中返回“No Repository”错误,并且无法克隆。已验证存储库是否存在 git_data_dirs 文件夹中指定的内容。

作为测试,我可以直接从存储库/文件夹中克隆“无存储库”项目,因此存储库本身似乎没有任何问题。

重现步骤

不确定如何复制它,但这是我经历的步骤:

  • 主服务器上的备份项目
  • 在新服务器上恢复 tarball
  • 转到新服务器的 Web 仪表板中的项目路径,并获得“No Repository”。

我为诊断问题而采取的步骤。假设项目名为 myapp/myapp.foo.git:

  • 转到http://newgitserver.local/myapp/myapp.foo.git
  • 获取“无存储库”
  • 查看/etc/gitlab/gitlab.rb中的git_data_dirs:

    git_data_dirs({ "default": { "path": "/var/opt/gitlab/git-data"}, "silo": {"path": "/mnt/reposbackup/git-data"} })

  • 请注意,我的项目在两个文件夹中都可用:/var/opt/gitlab/git-data/repositories/myapp/myapp.foo.git AND /mnt/reposbackup/git-data/repositories/myapp/myapp.foo.git

  • 尝试重新启动服务器 - 结果相同
  • 尝试 sudo gitlab-ctl reconfigure - 结果相同
  • 尝试重新启动 runv 服务: sudo systemctl restart gitlab-runsvdir - 结果相同

我还查看了数据库,“projects.repository_storage”值似乎是正确的。即使将其更改为“默认”与“筒仓”(这是我的备用目录)似乎也不起作用。

我试图了解 gitlab 如何确定存储库的位置,因为对 repo-path 的检查似乎是失败的原因。

解决方案

sudo gitlab-rake cache:clear迁移完成后运行。

gitlab gitlab-omnibus

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

标签 统计

ant ×1

eclipse ×1

flex4 ×1

gitlab ×1

gitlab-omnibus ×1

mxmlc ×1

popen ×1

pycharm ×1

python ×1

rsls ×1

subprocess ×1